日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Python與C語言、Java、Nodejs、Golang進行性能測試比較

背景說明

在最近的項目開發(fā)中,遇到一個Python處理性能問題

創(chuàng)新互聯(lián)建站專注于玉樹企業(yè)網(wǎng)站建設,成都響應式網(wǎng)站建設公司,商城網(wǎng)站定制開發(fā)。玉樹網(wǎng)站建設公司,為玉樹等地區(qū)提供建站服務。全流程按需網(wǎng)站設計,專業(yè)設計,全程項目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務

由于實時數(shù)據(jù)量較大(每秒有2100條日志,且每條日志平均大小在1kB左右),且受制于硬件資源限制,使用Python做實時數(shù)據(jù)處理,無法完成當前規(guī)模的數(shù)據(jù)集處理能力,數(shù)據(jù)越積越多,數(shù)據(jù)入庫延時越來越長!

  • 第一版Python實現(xiàn),其處理性能:840/s
  • 優(yōu)化版Python實現(xiàn),其處理性能:1100/s

離2100/s,才剛滿足其一半的性能,這是不能接受的!

結論:在不使用Python多并發(fā)處理或增加硬件資源條件下,Python是不能完成當前系統(tǒng)性能要求的!

補充說明:

開3~4個Python數(shù)據(jù)處理進程能夠剛剛滿足系統(tǒng)性能要求,但是數(shù)據(jù)處理僅是系統(tǒng)一個模塊,系統(tǒng)還有其他功能模塊,對數(shù)據(jù)處理硬件資源要求,CPU不超過2個邏輯核心,內存最大不超過4GB;

關于硬件資源,由于項目規(guī)模原因,設備資源是有限的。

解決方案

本身知道Python運行速度并不快,跟其他編程語言(Java、Golang、C++等)性能差距較大。平時項目開發(fā),使用Python都沒有任何問題。確實沒有重視Python性能方面的問題。

綜合考慮,就眼下項目實際情況,為解決數(shù)據(jù)處理性能問題,采用Golang方案,使用Go語言重寫數(shù)據(jù)處理模塊代碼邏輯,并最終解決了數(shù)據(jù)處理的性能問題!

最后說一下Go版數(shù)據(jù)處理性能:Go版數(shù)據(jù)處理性能是Python版的4到5倍,2100條日志處理只用了0.3s,僅使用單核CPU未并非處理,而且也只使用了單核 CPU 60%的處理性能!

Python性能測試

接下來進入主題,Python運行效率慢于其他編程語言,到底有多慢呢?那我們做一個Python的性能測試。

1.測試內容:

求0~N之間質數(shù)個數(shù),具體求以下整數(shù)區(qū)間質數(shù)個數(shù):

  • 0~1w
  • 0~4w
  • 0~10w
  • 0~20w
  • 0~50w
  • 0~100w

強調說明:本測試只是用來說明Python運行效率,語言其他方面的對比不屬于該測試范疇!

2.測試編程語言包括:

測試編程語言有:C語言、Java、node.js、Golang、Python等,通過不同語言測試結果,對比得出Python的運行效率結論。

語言版本說明:

  • C語言:gcc version 8.1.0
  • Java:1.8.0_121
  • Nodejs:v10.15.3
  • Golang:v1.12.7
  • Python:v3.7.3

除了Python,選擇了C語言、Java、Nodejs、Golang作為性能對比測試語言,代表了當前主流的、使用廣泛的編程語言

3.測試環(huán)境說明:

  • 在windows10最新版本;
  • java代碼打包成可執(zhí)行jar包,python代碼生產pyc文件,C代碼和Go代碼生產各自的可執(zhí)行代碼;

  • 求素數(shù)過程采用相同的方法(兩層for循環(huán))

4.測試結果:

5.測試結論:

這5種編程語言,C語言運行效率最高,Python的運行效率最差。

C語言、Java、Node.js、Golang的運行效率比Python成幾何倍數(shù)高。

舉一個比較明顯測試結果,求0~20w之整數(shù)區(qū)間的質數(shù)個數(shù),這個過程:

  • C語言用時6s
  • Java用時7s
  • Nodejs用時8s
  • Golang用時17s
  • Python用時121s,是C語言的20倍,是Java的17倍,是Nodejs的15倍,是Go的7倍

開發(fā)效率和運行效率

對編程而言,開發(fā)效率和運行效率是始終是對立的:

  • 追求開發(fā)效率高,其運行效率不快;
  • 追求運行效率高,其開發(fā)效率不快;

既能保證開發(fā)效率,又能兼顧運行效率,那只能等到量子計算機普及了,扯遠了....

Python的開發(fā)效率

Python運行效率不高,但是其開發(fā)效率很高,這就是Python的優(yōu)勢,簡單易學習,快速入門、實現(xiàn)短周期迭代開發(fā),加之擁有豐富的、功能強大第三方庫,一旦你使用Python一段時間,你就會對它上癮,產生依賴,離不開它,再使用其他編程語言,各種不適應,因為Python給我們開發(fā)帶來了太多方便,這就是Python開發(fā)效率!

再舉個例子

網(wǎng)上有這樣一個段子,同樣一個功能模塊,使用C語言實現(xiàn)需要寫幾百行代碼,使用Java實現(xiàn)需要寫100行代碼,使用Python實現(xiàn)就需要十幾行代碼,這個一點不夸張,確實是這樣,雖然Python運行效率不強,但是Python的開發(fā)效率快。

綜述

這個測試目的:是對Python這門語言有一個正確的認知,不僅要知道Python功能強大,優(yōu)勢眾多,應用廣泛,但性能是Python不能規(guī)避的問題,只有了解了這些,我們才能正確運用Python!


分享名稱:Python與C語言、Java、Nodejs、Golang進行性能測試比較
標題鏈接:http://www.dlmjj.cn/article/dpopepi.html