有关如何使用TPL和/或PLINQ进一步优化以下内容的任何提示。
下面的代码在后台工作程序上运行
Read a large table using sql reader
Open stream writer to write a large csv file
while (reader.read())
{
massage the data, parse data from columns etc.
create csv string to write to file
write csv line to file
}
close reader
close file
谢谢。
答案 0 :(得分:0)
通过将csv行数据写入StringBuilder(I.E.,在内存中)然后将内容写入csv文件,可能会发现更好的性能。我建议使用这两种方法以及像ANTS或JetBrains产品这样的内存分析器。
答案 1 :(得分:0)
定义“进一步优化”...您想要更快的速度还是更少的内存使用?
假设上面的伪代码被正确实现,那么内存使用应该已经非常小了。
速度?根据您使用大型数据集的说法,数据阅读器将是您最大的缓慢来源。所以如果你真的想要使用并行处理,那么你必须分割你的数据集(大概是开放多个读者?)
但话说回来,你已经在后台工作者中运行了它,它真的很重要吗?