私はバイナリファイルを読んでいますが、ここにサンプルがあります:
public static byte[] ReadFully(Stream input)
{
byte[] buffer = new byte[16*1024];
int read;
while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
{
......
}
}
明らかに、バッファー サイズ (16*1024) がパフォーマンスに大きく影響します。I/Oテクノロジー(SATA、SSD、SCSIなど)と、ファイルが存在するパーティションのフラグメントサイズ(パーティションのフォーマット中に定義できます)に依存することを読みました。
しかし、ここで質問 があります。バッファ サイズを定義する公式またはベスト プラクティスはありますか? 現在、試行錯誤しながら定義しています。
編集: サーバーでさまざまなバッファー サイズを使用してアプリケーションをテストしたところ、4095*256*16 (16 MB) で最高のパフォーマンスが得られました!!! 4096 は 4 秒遅くなります。
非常に役立ついくつかの古い投稿を次に示しますが、その理由はまだわかりません。