Re: [問題] perl or awk

看板Perl作者 (Neisseria)時間10年前 (2015/05/08 10:54), 10年前編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《gecer (gecer)》之銘言: : 小弟初學 方向是處理大資料(一份至少500MB的txt log) : 最近google awk 和 perl的比較 發現有awk 執行速度比較快得說法 : 但是又聽說perl 處理字串比較有效率 : 想請教如果處理大資料使用哪種語言比較適合? 500MB 的資料應該沒有大到只有 perl 或 awk 其中一個能處理 我自已測是 Awk 比較快;不過,選擇喜歡的語法,順手好用的比較重要 以下測試,僅供參考 沒時間看的話,就是 Awk 比 Perl 和 Ruby 都快 平台:Debian Linux Jessie GNU Awk 4.1.1 Perl 5.20.2 Ruby 2.1.5p273 文字檔案 gencode.v22.annotation.gtf 大小 1.2 GB 測試動作為,將第三個欄位的值做為 Hash key,動作結束後印出 Hash 的 key 用 diff 可知三個輸出結果相同 $ head -n1 gencode.v22.annotation.gtf chr1 HAVANA gene 11869 14409 . + . gene_id "ENSG00000223972.5"; gene_type "transcribed_unprocessed_pseudogene"; gene_status "KNOWN"; gene_name "DDX11L1"; level 2; havana_gene "OTTHUMG00000000961.2"; $ time gawk '{ h[$3]++; } END { for (k in h) print k; }' gencode.v22.annotation.gtf | sort > output_awk real 0m2.256s user 0m0.944s sys 0m0.152s $ time perl -a -ne '$h{$F[2]}++; END { for $k (keys %h) { print $k, "\n";} }' gencode.v22.annotation.gtf | sort > output_perl real 0m22.341s user 0m22.176s sys 0m0.152s $ time ruby -a -ne 'BEGIN { h = Hash.new 0 }; h[$F[2]] += 1; END {h.keys.each {|e| puts e}};' gencode.v22.annotation.gtf | sort > output_ruby real 0m10.165s user 0m10.024s sys 0m0.128s -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 112.104.98.143 ※ 文章網址: https://www.ptt.cc/bbs/Perl/M.1431053686.A.6E6.html ※ 編輯: Neisseria (112.104.98.143), 05/09/2015 08:10:09
文章代碼(AID): #1LJ2LsRc (Perl)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1LJ2LsRc (Perl)