便利なコードパーツ集!

やまろうのプログラミングTips

Java

java.io VS java.nio どっちが速い?ファイル読み込み

投稿日:2016年12月6日 更新日:

2003年

読者の皆さんは巨大なファイルを読み込む時にどうしますか?

「まぁ、ふつうにBufferedInputStreamかねぇ?」

それもいいんですが、JDK1.4で追加されたjava.nio(New I/O)の方が
より向いています。New I/Oは、ヒープの外にバッファを割り当てることが
可能であり、大容量で高速なアクセスが可能となります。

とはいえ、

「ホントに速いのぉ〜???」

ということで今回はjava.io VS java.nioと題し、ホントにNew I/Oが速い
のかどうか確かめてみたいと思います。

それでは選手入場です。
赤コーナー、java.io所属ぅー、BufferedInputStream!!!!!
青コーナー、java.nio所属ぅー、FileChannel!!!!!

Ready Fight!!

スポンサーリンク



実行でぃ!
その前に一つ確認、このプログラム実行すると最終的に100Mくらいの
ファイルが出来上がるので、ディスクの容量が足りない人は(*)をコメント
アウトしてからにして下さい。

それじゃぁ、実行でぃ!
javac -d . *.java

java -Xms100m -Xmx500m etc.ReadTime
del bigFile

[実行結果]

ファイルサイズ=100byte
size=100
java.ioで読み込んだ時間=0ミリ秒
java.nioで読み込んだ時間=78ミリ秒
java.ioの方が-78ミリ秒多くかかった

ファイルサイズ=1000byte
size=1000
java.ioで読み込んだ時間=0ミリ秒
java.nioで読み込んだ時間=0ミリ秒
java.ioの方が0ミリ秒多くかかった

ファイルサイズ=10000byte
size=10000
java.ioで読み込んだ時間=0ミリ秒
java.nioで読み込んだ時間=0ミリ秒
java.ioの方が0ミリ秒多くかかった

ファイルサイズ=100000byte
size=100000
java.ioで読み込んだ時間=0ミリ秒
java.nioで読み込んだ時間=0ミリ秒
java.ioの方が0ミリ秒多くかかった

ファイルサイズ=1000000byte
size=1000000
java.ioで読み込んだ時間=0ミリ秒
java.nioで読み込んだ時間=16ミリ秒
java.ioの方が-16ミリ秒多くかかった

ファイルサイズ=10000000byte
size=10000000
java.ioで読み込んだ時間=94ミリ秒
java.nioで読み込んだ時間=140ミリ秒
java.ioの方が-46ミリ秒多くかかった

ファイルサイズ=100000000byte
size=100000000
java.ioで読み込んだ時間=1063ミリ秒
java.nioで読み込んだ時間=1266ミリ秒
java.ioの方が-203ミリ秒多くかかった

-Xms100m -Xmx500mってのは、
それぞれメモリ割り当てプールの初期サイズ、最大サイズです。
かなりでかいファイル読み込むのででかめにしてあります。
で実行に結構時間かかるので低スペックのPCを使ってる方は気をつけてちょ!

で実行結果ですけども、
「い、いいのかなぁ・・・・・、こんな結果で・・・」
「全てにおいてNew I/Oの方が、お、遅いねぇ」
コーディングの仕方が悪いのか、それとももっとでかいファイルを
扱う場合は速いとかですかねぇ。

嫌な終わり方だけど、んじゃ
やまろう

スポンサーリンク

-Java

Copyright© やまろうのプログラミングTips , 2020 AllRights Reserved Powered by AFFINGER4.