zoukankan      html  css  js  c++  java
  • 求一列的和,awk和perl哪个快?

    下午和群里的朋友争论了一下,有关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
    ", 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
    ",$sum}' row.txt 
    36000003.00
    
    real    0m17.635s
    user    0m17.320s
    sys    0m0.256s

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

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

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

  • 相关阅读:
    [FlareOn4]greek_to_me
    [FlareOn1]Sploitastic
    [FlareOn1]Creation
    [FlareOn1]5get_it
    esxi6.7中,显卡设置为直通步骤
    esxi6.7安装步骤
    nmcli命令详解
    查看指定进程的IO/CPU/MEM/带宽/显卡
    使用WSGIServer修改静态文件
    k8s配置多端口ingress
  • 原文地址:https://www.cnblogs.com/agostop/p/3218022.html
Copyright © 2011-2022 走看看