[原创]几个统计记录行数的效率比较
时间:2009-07-16 来源:nianzong
目前本人所知道的统计记录行数的有下面几个命令:
1. wc -l filename
2. awk 'END{print NR}' filename
3. grep -c '.*' filename
下面对这几个命令做个统计效率的比较,目标文件为apache log:
[root@apache tmp]# time wc -l www.jsharer.com-access_log.20090706
5566746 www.jsharer.com-access_log.20090706
real 0m2.224s
user 0m1.181s
sys 0m0.987s
[root@apache tmp]# time awk 'END{print NR}' www.jsharer.com-access_log.20090706
5566746
real 0m5.210s
user 0m3.827s
sys 0m1.334s
[root@apache tmp]# time grep -c '.*' www.jsharer.com-access_log.20090706
5566746
real 2m29.039s
user 2m27.477s
sys 0m0.994s
效率高低很明显了。wc -l的效率是最高的。grep -c 最慢
不过在测试时需要注意一下,最好先每个命令都先跑一次,第一次统计的那个命令时间会相对长点。跑一次后有了缓存,每个命令再跑一次,记录的时间才是可供比较的,总之不要记录第一次的,因为这里主要是对比三个命令的效率。
[root@apache logs]# free
total used free shared buffers cached
Mem: 8310260 5118420 3191840 0 77476 4524532
-/+ buffers/cache: 516412 7793848
Swap: 2096440 15128 2081312
Intel(R) Xeon(R) CPU E5310 @ 1.60GHz 4核
hda: WDC WD740ADFD-00NLR5, ATA DISK drive
1. wc -l filename
2. awk 'END{print NR}' filename
3. grep -c '.*' filename
下面对这几个命令做个统计效率的比较,目标文件为apache log:
[root@apache tmp]# time wc -l www.jsharer.com-access_log.20090706
5566746 www.jsharer.com-access_log.20090706
real 0m2.224s
user 0m1.181s
sys 0m0.987s
[root@apache tmp]# time awk 'END{print NR}' www.jsharer.com-access_log.20090706
5566746
real 0m5.210s
user 0m3.827s
sys 0m1.334s
[root@apache tmp]# time grep -c '.*' www.jsharer.com-access_log.20090706
5566746
real 2m29.039s
user 2m27.477s
sys 0m0.994s
效率高低很明显了。wc -l的效率是最高的。grep -c 最慢
不过在测试时需要注意一下,最好先每个命令都先跑一次,第一次统计的那个命令时间会相对长点。跑一次后有了缓存,每个命令再跑一次,记录的时间才是可供比较的,总之不要记录第一次的,因为这里主要是对比三个命令的效率。
[root@apache logs]# free
total used free shared buffers cached
Mem: 8310260 5118420 3191840 0 77476 4524532
-/+ buffers/cache: 516412 7793848
Swap: 2096440 15128 2081312
Intel(R) Xeon(R) CPU E5310 @ 1.60GHz 4核
hda: WDC WD740ADFD-00NLR5, ATA DISK drive
相关阅读 更多 +