最近在和一个朋友的交流中,遇到这么一个问题,如何能较快对一个较大的文本文件(1G或更大)的文本行数进行统计。如果不考虑效率,要统计一个文本的行数其实一点也不难,但是如果需要在较快的时间内做完,恐怕就得考虑实现方法了。 为此,自己尝试了几种方法,在这里把这几种方法拿出来和大家讨论一下。 首先是生成测试数据的代码:
.NET4.0 + StreamReader + ReadLine()原理很简单,使用StreamReader的ReadLine方法,每执行一次,行数加一。代码如下:
测试结果如下: 对于以上这种方法,平均每次执行时间为55s左右,执行效率明显不尽如人意。 如果我们同样采用流,不过使用分块的方式,将文件内容一块一块读进内存,在解析每块内容的行数,最后相加。这样做的效率如何呢? .NET4.0 + StreamReader + ReadBlock()
运行结果如图: |
|
来自: ruiruiruiruic... > 《开发》