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で検索すると、こんな感じで書いてあるコードがそこそこある。