C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 80 を表示中)
■47179 / )  Re[12]: CSVファイル入出力時の速度向上方法について
□投稿者/ なちゃ (398回)-(2010/02/20(Sat) 00:46:11)
こういうベンチって正確に実行するのはそれなりに難しいですよ。

※例えば、レコード単位で読み書きと、1MB単位で読み書きの速度を計測した時、双方読み込みファイルのキャッシュは消えた状態で実行しているか?

もし読み込みファイルがキャッシュにのっていれば、実質的にHDDアクセスの際のシークや回転待ちがゼロになってしまって、
・単なるシーケンシャルな書き込み
・デコード+エンコード+単なるシーケンシャルな書き込み
の比較にしかならない可能性があります。

当然、本当のレコード単位や1MB単位(本当のHDDアクセス単位はまた違いますが)でのランダム読み書きとは全くパフォーマンスが違ってきます。


あと、1MBサイズとかでファイルに書き込むと、ライトスルーな動作になって(遅延書き込みが無効になって)、読み込みと交互に実行すると余計パフォーマンスが悪くなる気もします。
※1MBを一気にFileStreamに書き出さずに、遅延書き込みが有効になるくらいのもう少し小さいサイズで繰り返して書き込めばこれは防げると思いますが。

逆にレコード単位だと、デフォルトでは4Kか8Kか単位でファイル書き込みになり、このサイズだと遅延書き込みが効くので、読み込みと交互だとパフォーマンスが上がったりという可能性もある気がします。
※こっちはFileStreamのバッファサイズを遅延書き込みできる範囲内で大きくするともう少し効率よくなりそうです。


返信 編集キー/


管理者用

- Child Tree -