c# - 逐行处理大型文件 - 优化

时间:2012-11-26 22:05:08

标签: c# multithreading file-processing

所以我目前正在尝试研究处理c#中处理大文件的最佳方法。我们目前有一个包含1000万行数据的大型文件。最初,我的客户说该文件将包含数万行,因此我们先前将每行写入一个新文件,然后由我们的接口引擎进行处理。然而,现在我们看到这些文件比预期的大得多,处理需要一个周末。我正在努力优化我们的逻辑,并正在研究最佳方法。我试着尝试从单个文件读取多个线程,但磁盘I / O的机械瓶颈并没有提供太多改进空间。下一个方法是读取每一行并处理单独线程上的每一行(或一组行)。这将给我们一些优化,因为每条线的处理可以同时完成。我知道有些人在处理非常大的文件方面有丰富的经验,并希望得到一些关于我的方法的反馈,或者可能有其他方法来解决这个问题。

任何想法和评论都表示赞赏。

1 个答案:

答案 0 :(得分:2)

  

然而,现在我们看到这些文件比预期的大得多,处理需要一个周末

读取一千万行的文件并不需要一个周末或类似的东西,所以任何优化工作都应该集中在处理从文件而不是文件I / O读取的数据。

您没有说明您正在进行哪些处理,但是,例如,如果您正在更新数据库,则可以通过将更新批量处理到事务中来实现显着的性能提升 - 例如,每10,000行一次交易。 / p>

考虑到它整个周末,它不太可能受CPU限制,所以我不确定多线程是第一个探索的途径。

如果您需要更多帮助,请提供有关您正在对数据执行的操作的更多信息。