0

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

任何想法和意见表示赞赏。

4

1 回答 1

2

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

读取具有 1000 万行的文件不需要一个周末或类似的时间,因此任何优化工作都应该集中在处理从文件读取的数据而不是文件 I/O 上。

你没有说你正在做什么处理,但是,例如,如果你正在更新一个数据库,你可以通过将更新批处理到事务中来实现显着的性能改进——比如每 10,000 行一个事务。

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

如果您需要更多帮助,请提供更多有关您对数据的处理方式的信息。

于 2012-11-26T22:17:27.830 回答