明日も楽をするために

めんどくさがりなITエンジニアが書くメモ帳

Javaの適切なバッファサイズとは?

例えば以下のようなコードがあったとして

byte[] data = new byte[1024];
while ((size = fis.read(data)) != -1 ) {
    fos.write(data, 0, size);
}

byteに指定する値はいくつが適正なのか?

ちなみにBufferedInputStreamなどを使う方法だと、デフォルトのサイズはJavaのバージョンによって異なるらしい(512~8024ぐらい??)

Java ファイルコピー(バッファサイズを変更) / Chat&Messenger
ここによると1MBが適切らしい。ネット検索すると1024のサンプルコードが多いけど、それはテキストを対象とした場合かなと思う。

zipなどを読み込もうとすると、だいたい容量で数十MBから数百MBはすると思うので1024だと1KBで、どう考えても時間がかかる。

//1MBの指定
byte[] data = new byte[1048576];

1024で指定してるコードが多いということは最近の人はJavaのコードをネットにあげてないのか。それともみんなコピペコードばかりなのかな。

Githubで検索すると、こんな感じで書いてあるコードがそこそこある。