我想知道一些事情,我有一个循环运行一整天(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 的回答中的建议使用,如果这会给我带来比 Jeremy 评论的任何性能提升吗?