• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

求一列的和,awk和perl哪个快?

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

下午和群里的朋友争论了一下,有关awk和perl处理文本的速度,自己一直比较推崇perl,对awk知之甚少,结果就想当然的觉得perl快,结果一番争吵后,觉得还是实验一下靠谱,(其实是想证明一下perl确实很快……唉,找虐啊)

先是制造了一个文本,1200万行,大致内容如下

row.txt:

row1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50

row2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50

row3 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 

就是类似这种文本

然后就是用awk和perl,分别计算第四列的和

 

time awk '{ sum += $4 } END { printf "%.2f\n", sum }' row.txt 
36000003.00

real    0m4.020s
user    0m3.716s
sys    0m0.288s
time perl -ne '$sum+=$1 if /(?:.*?\s.*?){2}\s(\d).*/  ; END{printf "%.2f\n",$sum}' row.txt 
36000003.00

real    0m17.635s
user    0m17.320s
sys    0m0.256s

唉,正儿八经的扇了一回脸啊……

其实也正常,awk是C写的,而且对与列处理有专门的调优,这样比较一定是awk快的,只是自己对awk和sed一直有偏见,觉得有perl就用不上这俩货,结果……

记录下,给自己提个醒儿,以后没实践过的时候,不要乱说话……  T^T


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Perl基本备忘录发布时间:2022-07-22
下一篇:
Perl与数学:一份快速参考发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap