0

我过去一个小时一直在谷歌搜索,但找不到答案。

我有一个大文本文件(1GB),我也有一个文件,它已全部映射,所以我知道在第 x 行到第 y 行它包含我所追求的数据。

我的问题是如何只取我感兴趣的行而不遍历文件中的所有行?

我对这样做感兴趣的主要原因是出于性能原因,我想将第 503,432 行带到第 504,432 行比从第 1 行循环到 504,432 行来找到这些行更快。

非常感谢任何提示

4

2 回答 2

0

如果您正在寻找特定的行号,则无论如何都需要读取所有行以对其进行计数。除非行是固定长度,否则您无法在不读取文件的情况下计算行数。阅读时不需要保存这些行。只保存您需要的行号,或处理它们而不将它们保存在内存中以备后用。

于 2013-08-28T09:02:50.370 回答
0

我认为这是过早优化的情况。我正在使用FileHelpers AsyncEngine处理 ~6GB 文件,并且“读取文件”部分无论如何都不是该过程中最慢的部分。

读取前 500k 行并且什么都不做需要多长时间?你要节省多少时间?

于 2013-08-28T09:02:58.147 回答