私自身のプロジェクトの 1 つは、65536 ファイルへの複数の書き込み操作を同時に必要とします。
最初にすべてのファイルを開いてから書き込みを繰り返し、最後にすべてのファイルを閉じます。最初の書き込み操作が完了するまでに約 16 分かかり、2 回目の書き込み操作には 40 分かかります。それ以上のテストはありません。
for (int i = 0; i < 65536; i++)
{
fileStream[i] = new FileStream(buffDir+"\"+ i.ToString() + ".dat", FileMode.Create,FileAccess.Write, FileShare.Write,14000);
}
書く;
書く;
書く;
……
for (int i = 0; i < 65536; i++)
{
ファイルストリーム[i] .close();
}
書き込み操作中に対応するファイルが 1 つだけ開かれている場合、そのファイルは書き込み後に閉じられます。その後、すべての書き込み操作が完了するまでに約 2 分 30 秒しかかかりません。
サイクル{
for (int i=0;i<65536;i++)
{
開ける;
書く;
近い;
}
}
2 番目の方法のパフォーマンスが最初の方法よりもはるかに優れていることがわかります。すべてのファイルを一度に開くと大量のメモリが必要になります。最も重要なことは、.net がファイルストリームを処理するときに、大量のメモリ割り当てとリサイクルを実行する必要があり、大量のメモリとリソースが消費されるということです。
さらに、ファイルの数が比較的少ない場合、最初の方法のパフォーマンスが 2 番目の方法よりもはるかに優れていることもテストしました。
http://xiyangwushi.cnblogs.com/archive/2006/06/28/437409.html