对于1GB wc -l
这样的大文件,它的运行速度很慢。我们是否有更快的方法来计算特定文件的换行数?
如果您怀疑
—
墨菲(Murphy
wc
有太多的开销,则可以尝试自己实现foreach byte in file: if byte == '\n': linecount++
。如果用C或汇编程序实现,我认为它不会更快,除非在具有最高优先级的RTOS的内核空间中(甚至为此使用中断-您无法对系统做任何其他事情)。 ..好吧,我离题了;
只是为了了解扩展的规模,我快速浏览
—
墨菲
time wc -l some_movie.avi
了一个未缓存的文件,结果为5172672 some_movie.avi -- real 0m57.768s -- user 0m0.255s -- sys 0m0.863s
。基本上证明@thrig是正确的,在这种情况下,I / O会降低您的性能。
证明它是磁盘IO瓶颈的最佳方法
—
AugustBitTony
time wc -l some_large_file_smaller_than_cache
,快速连续执行两次,看看第二次操作有多快,然后time wc -l some_large_file_larger_than_cache
看看两次运行之间的时间如何变化。对于此处的〜280MB文件,时间从1.7秒变为0.2秒,而对于2GB文件,则均为14秒。
多慢对您来说太慢了?怎么
—
marcelm
/usr/bin/time wc -l <file>
说?您的硬件是什么?重复运行命令会更快吗?我们真的需要更多信息;)
0x0A
完整性,因此I / O无疑是瓶颈。