shell指令碼做文本解析同php和python比哪個效率更高?

來源:互聯網
上載者:User
關鍵字 python shell grep sort awk
shell中有很多強大的命令,比如awk、sort、grep等,這些命令的執行效率同php和python這樣的語言實現相比哪個更高呢?

回複內容:

N年前為了每天分析數十GB的日誌,正好做過測試。測試是在Linux環境下(Redhat ES 3),測試處理一個數百兆的記錄檔進行匯總分析(郵件日誌),分別用C, Perl, Python,Shell做同樣的處理。處理速度排名是C>>Perl>python>shell。C是最快的,比別的快上至少一個數量級;其次是Perl,畢竟是為文本處理而生,最強的內建Regex;Python比Perl慢了點,記得速度是Perl的60%左右;shell最慢,雖然sed, grep,awk都不慢(其實都是C寫的),但通過shell組合在一起效率還是差了不少。伺服器上臨時分析一些日誌資料的時候基本都是awk sort grep uniq sed之類,效能帥得很。
如果是長期需要處理的功能,一般都會做成php或者python指令碼,多數會丟crontab裡運行去。

量級不大的時候,開發效率、可維護性往往比效能更重要。 當效能更重要時,shell php python這些都不是好選擇。 hadoop之類的並行計算方案會更靠譜,畢竟單位節點的計算能力是很容易觸頂的。處理的資料量較小的情況下,一般使用 shell。功能齊全,信手拈來,很方便,速度也很快。
在資料量較大的情況下就建議用進階語言了。如果是重複性的記得寫成指令碼,方便複用。
資料量大可能會導致出錯以及效能問題,之前就遇到過一個問題,將一個檔案作為查詢條件用grep在另一個檔案中尋找,死活查不出來的情況...還有一個更奇葩,幾百萬行的一個文本用 uniq 去重之後還是各種重複。。。普通功能,shell的效率高,因為這些經典命令內部大多是C/C++實現的。
但在一些偏僻或者複雜功能中,限於這些命令本身的功能,需要“曲線救國”,反覆倒騰資料才能達到最終結果。
這時候,直接用php、python,速度就更快。
  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.