偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Python與C語言、Java、Nodejs、Golang進(jìn)行性能測試比較

新聞 前端
在最近的項(xiàng)目開發(fā)中,遇到一個Python處理性能問題,由于實(shí)時數(shù)據(jù)量較大,且受制于硬件資源限制,使用Python做實(shí)時數(shù)據(jù)處理,無法完成當(dāng)前規(guī)模的數(shù)據(jù)集處理能力,數(shù)據(jù)越積越多,數(shù)據(jù)入庫延時越來越長!

 

背景說明

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

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

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

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

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

補(bǔ)充說明:

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

關(guān)于硬件資源,由于項(xiàng)目規(guī)模原因,設(shè)備資源是有限的。

解決方案

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

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

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

Python性能測試

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

1.測試內(nèi)容:

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

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

強(qiáng)調(diào)說明:本測試只是用來說明Python運(yùn)行效率,語言其他方面的對比不屬于該測試范疇!

2.測試編程語言包括:

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

語言版本說明:

  • 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作為性能對比測試語言,代表了當(dāng)前主流的、使用廣泛的編程語言

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

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

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

4.測試結(jié)果:

5.測試結(jié)論:

這5種編程語言,C語言運(yùn)行效率最高,Python的運(yùn)行效率最差。

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

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

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

開發(fā)效率和運(yùn)行效率

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

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

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

Python的開發(fā)效率

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

再舉個例子

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

綜述

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

責(zé)任編輯:張燕妮 來源: 今日頭條
相關(guān)推薦

2010-03-10 16:35:23

Python編程語言

2009-06-15 11:03:10

Java語言C#語言

2020-08-14 10:54:56

NodejsGolang開發(fā)

2018-08-01 15:10:02

GolangPython語言

2012-03-26 10:55:03

JavaJava EE

2020-07-27 08:24:42

編程語言C語言Java

2010-03-11 10:51:19

Python編程語言

2023-07-31 09:13:13

ValidatorGolang

2013-04-03 10:04:36

MySQL 5.6

2009-08-31 18:40:01

Java 7新功能

2010-03-01 13:34:38

Python腳本程序

2010-07-13 09:10:26

.NETMonoJava

2021-10-10 23:02:49

Golang語言代碼

2009-11-11 10:43:49

Go語言Google

2017-10-12 17:58:42

C語言Gtk+應(yīng)用功能測試

2025-01-27 11:52:23

2019-02-21 09:00:00

PythonGolang編程語言

2009-08-03 16:28:53

Java語言與C#語言

2010-03-10 19:46:07

Python編程語言

2020-09-09 09:38:47

GoLangNodeJS編程語言
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號