今日も僕は定時で帰る!!

ファイル操作

ファイル読み込み速度についてどの実装が速いか検証してみた!

チュートリアル

Javaのファイル読み込みにはたくさんの実装方法が存在します。では、どの方法が読み込み速度が速いのでしょうか?
今回はいくつかの実装方法で検証してみました。

測定方法

以下の対象ファイルの読み込み、処理時間を測定する。
測定は3回実施する。

ファイルサイズ 約306 MB
ファイル行数 100万行※1行あたり平均320バイト程度

 

使用クラス

以下の3クラスを使用して、ファイルの読み込み処理を実装する。

  1. java.io.FileReader#readLin(1行読み込み)
  2. java.io.FileInputStream#readLin(1行読み込み)
  3. java.nio.file.Files#lines(全行読み込み)

ケース1:java.io.FileReader#readLin(1行読み込み)

ケース2:java.io.FileInputStream#readLin(1行読み込み)

ケース3:java.nio.file.Files#lines(全行読み込み)

テストコード(JUnit)

測定結果

各3回実施した結果、以下の通りとなった。

実装 測定1回目 測定2回目 測定3回目
ケース1 2852 ms 3034 ms 2901 ms
ケース2 3065 ms 2969 ms 2659 ms
ケース3 3022 ms 2789 ms 2963 ms

※赤文字:最速

ファイル読み込みを各3回実施してみた結果、最速は都度変わる結果となった。
また、2位、3位と比較した場合も、ほぼ誤差程度の違いしか見られなかった。

結局どれが速いか?は決められない結果となった。
実装は好みにお任せします。