不嚴謹的不一樣語言下大 Excel 文件寫入的性能比較

背景

去年由於線上系統須要導出大量數據(大概是 11 萬行)到 Excel,代碼是 Python 2.7 寫的,除去數據庫查詢耗時,整個的 Excel 文件生成也還要耗費幾十秒的時間,這聽起來真是一個很是誇張的事情。後來爲其更換了號稱性能表現最好的 pyexcelerate 庫,性能確實有提高,可是還是差強人意的在小几十秒。git

昨天突發奇想,若是是換成其餘語言,這個 excel 導出是否還須要這麼長時間?因而通過一番試驗以後,就有了今天的這篇文章。github

特別聲明:試驗只是爲了感官上作個簡單對比,測試結果採集數據只考慮了耗時,沒有考慮資源消耗等狀況,須要嚴謹的性能對比的讀者,能夠放棄閱讀了。數據庫

測試內容

使用不一樣的語言及其版本,測試各自完成包含 100,000 行 x 50 列單元格的 excel 文件的生成,對比其各自耗費時間,3次重複執行取其平均值後進行橫向比較。性能優化

已經測試的語言及版本

  • Ruby 2.6 + axlsx 2.0.1
  • Python 2.7 + pyexcelerate 0.7.3
  • Python 3.6 + pyexcelerate 0.7.3
  • Go 1.10.1 + gooxml 0.8

測試代碼

https://github.com/Martin91/e...性能

結果

clipboard.png

結論

就這個測試場景來講:測試

  1. Go 1.10.1 + gooxml 0.8 是最快的;
  2. 一樣是 pyexcelerate 0.7.3,Python 2.7 性能優於 Python 3.6;
  3. Ruby 2.6 + axlsx 2.0.1 表現最不給力,這裏有個題外話,選擇的 axlsx 自己並非性能最好的 gem,只是流行度夠高,Ruby 有一個專門針對性能優化後的 gem,可是由於知之甚少,沒有采用。
相關文章
相關標籤/搜索