我过去一个小时一直在谷歌搜索,但找不到答案。
我有一个大文本文件(1GB),我也有一个文件,它已全部映射,所以我知道在第 x 行到第 y 行它包含我所追求的数据。
我的问题是如何只取我感兴趣的行而不遍历文件中的所有行?
我对这样做感兴趣的主要原因是出于性能原因,我想将第 503,432 行带到第 504,432 行比从第 1 行循环到 504,432 行来找到这些行更快。
非常感谢任何提示
我过去一个小时一直在谷歌搜索,但找不到答案。
我有一个大文本文件(1GB),我也有一个文件,它已全部映射,所以我知道在第 x 行到第 y 行它包含我所追求的数据。
我的问题是如何只取我感兴趣的行而不遍历文件中的所有行?
我对这样做感兴趣的主要原因是出于性能原因,我想将第 503,432 行带到第 504,432 行比从第 1 行循环到 504,432 行来找到这些行更快。
非常感谢任何提示
如果您正在寻找特定的行号,则无论如何都需要读取所有行以对其进行计数。除非行是固定长度,否则您无法在不读取文件的情况下计算行数。阅读时不需要保存这些行。只保存您需要的行号,或处理它们而不将它们保存在内存中以备后用。
我认为这是过早优化的情况。我正在使用FileHelpers AsyncEngine处理 ~6GB 文件,并且“读取文件”部分无论如何都不是该过程中最慢的部分。
读取前 500k 行并且什么都不做需要多长时间?你要节省多少时间?