何か知りたいのですが、このループはすべての日 (7 回) 実行され、その中に別のループがあり、ファイル内のすべてのレコードに対して実行されます。(約 100000) したがって、全体で約 700000 回、各ループの各処理をログに記録し、それをファイルに記録したいと思います。たとえば、最初のループの内部にいて、最初のループの中にいるとします。毎回、何が行われたかをファイルに記録します。しかし、問題は、毎回ログに記録すると、非常に多くの IO 操作のためにパフォーマンスがひどく損なわれることです。私が考えていたのは、すべてのステップをメモリに記録する方法があるということです (メモリ ストリームまたは何か)そして外側のループの終わりに、そのすべてのメモリストリームデータをファイルに記録しますか?
私が持っているかどうか言う
for (int i=0; i<7; i++)
{
for (int j=0; j<RecordsCount; j++)
{
SomeOperation();
// I am logging to a file here right now
}
}
パフォーマンスがひどく低下します。ログ ファイルを削除すると、はるかに早く完了することができます。そのため、最初にメモリにログを記録し、そのすべてのログをメモリからファイルに書き込む方がよいと考えていました。それで、これを行う方法はありますか?たくさんあるとしたらどれが一番いいですか?
ps: http://www.codeproject.com/Articles/23424/TracerX-Logger-and-Viewer-for-NETを見つけたロガーはここにありますが、必要に応じて他のカスタム ロガーやその他のものを使用できます。
編集:メモリ ストリームを使用し、それをすべてファイルに書き込むと、File.AppendAllLines
Yorye と zmbq の回答で提案されているように使用するよりもパフォーマンスが向上しますか?