自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

詳細(xì)的多維度測(cè)評(píng),看看哪個(gè) Python 版本速度最快!

新聞 前端
哪個(gè)版本的 Python 最快?當(dāng)然,這些問(wèn)題由多種因素決定,其中的主要的因素是什么呢?我們又如何為自己的應(yīng)用尋找最快的 Python 版本呢?

 哪個(gè)版本的 Python 最快?

當(dāng)然,這些問(wèn)題由多種因素決定,其中的主要的因素是什么呢?我們又如何為自己的應(yīng)用尋找最快的 Python 版本呢?帶著這些問(wèn)題,Hackermoon 上一位叫 Anthony Shaw 的作者為我們做了一些測(cè)試。

Anthony Shaw :Dimension Data 的 Talent 集團(tuán)總監(jiān),Python 軟件基金會(huì)成員,Apache 基金會(huì)成員

以下是對(duì)作者原文的翻譯:

使用 Python 性能測(cè)試套件

正如之前我在 speed.python.org 網(wǎng)站提到的,Python 核心開(kāi)發(fā)團(tuán)隊(duì)非常重視性能問(wèn)題,這對(duì)于比較官方基準(zhǔn)和 CPython 版本非常有用。

  1. 如圖,測(cè)試結(jié)果很難直觀讀取

  2. 其中不包含 PyPy

你可以通過(guò)執(zhí)行 pip install performance 命令來(lái)下載測(cè)試套件,然后執(zhí)行如下命令:

pyperformance run --python={chosen_python_runtime} -o my_results.json

該命令會(huì)針對(duì) Python 的目標(biāo)版本多次運(yùn)行一系列“實(shí)際”應(yīng)用程序,并記錄測(cè)試結(jié)果,取其平均值。

本文我對(duì)以下官方版本進(jìn)行了測(cè)試:

  • Python 2.7.10

  • Python 3.4.4

  • Python 3.5.4

  • Python 3.6.1

  • Python 3.7 beta 2(譯者注:作者進(jìn)行測(cè)試時(shí) Python 3.7 版本還未正式發(fā)布,beta 2 性能與正式版非常接近,同樣具有參考價(jià)值。Python 3.7 正式發(fā)布內(nèi)容請(qǐng)看這里

同時(shí)還測(cè)試了 PyPy(5.6)和 PyPy 3(5.10.0)。

測(cè)試結(jié)果

我根據(jù)這套測(cè)試用例進(jìn)行了測(cè)試,你也可以根據(jù)自己的情況自己編寫(xiě)一套測(cè)試。

我編寫(xiě)了一個(gè)簡(jiǎn)單的腳本,來(lái)獲得性能數(shù)據(jù)文,并將它們繪制成了圖表。腳本代碼你可以在這里找到:

  • https://gist.github.com/tonybaloney/4e8e45f9128e9eb6e4f36c73ba5e5574

所有圖表都以秒為單位,數(shù)值越低,表示性能越好。

完整的測(cè)試結(jié)果及圖表展示可請(qǐng)參閱:

  • https://github.com/tonybaloney/performance_testing/tree/master/png

渲染 HTML 模板

django_html 測(cè)試將使用 Django 模板渲染引擎來(lái)構(gòu)建一個(gè) 150x150 的 HTML 表格。 它利用了 Django 引擎的 Content 和 Template 類(lèi)。

如圖所示,Python 3.7 比 Python 2.7 快 1.19 倍,但除此之外,其他 Python 3 版本都沒(méi)有 Python 2.7 快。該結(jié)果與 speed.python.org 網(wǎng)站的測(cè)試結(jié)果一致。

PyPy 的測(cè)試結(jié)果顯示,PyPy 比 CPython 的任何 Python 版本都快,PyPy 3 比 PyPy 慢兩倍。Django 2.0 及更高版本已決定放棄對(duì) Python 2 的支持,因此 PyPy 將不再與 Django 2 兼容。

啟動(dòng)時(shí)間測(cè)試

該部分測(cè)試解釋器的啟動(dòng)時(shí)間

如圖所示,Python 2.7 是所有測(cè)試版本中啟動(dòng)速度最快的。

注:此處暫不討論 PyPy 的測(cè)試結(jié)果,文末再談。

加密測(cè)試(Crypto):crypto_paes

在這個(gè)測(cè)試中,Python 2 的速度明顯快于 Python 3,因?yàn)?nbsp;Crypto 要求大量數(shù)字運(yùn)算,而 Python 3 沒(méi)有 32 位整數(shù)類(lèi)型,只有一個(gè)長(zhǎng)整型(long integer)。

同樣差距比較明顯的是,PyPy 3 比 PyPy 慢 5 倍。

算法測(cè)試:n-queens

結(jié)果顯示,在 CPython 系列中,Python 3.7 性能最佳。此外,PyPy 3 和 PyPy 測(cè)試結(jié)果比較接近,PyPy 小勝。

浮點(diǎn)運(yùn)算測(cè)試

“浮點(diǎn)”基準(zhǔn)測(cè)試需要人工創(chuàng)建繁重的浮點(diǎn)運(yùn)算應(yīng)用程序,在這里我們通過(guò) math.cos(),math.sin() 和 math.sqrt() 函數(shù)創(chuàng)建,總共創(chuàng)建 10 萬(wàn)個(gè)浮點(diǎn)對(duì)象。

PyPy 非常適合浮點(diǎn)運(yùn)算,在大量的數(shù)字運(yùn)算、可預(yù)測(cè)的類(lèi)型和方法以及循環(huán)上展現(xiàn)了非常優(yōu)秀的性能。Python 3.7 具有新的方法能快速調(diào)用操作碼,該操作碼正在此測(cè)試中剛好用上,表現(xiàn)佳。

正則表達(dá)式測(cè)試

在這項(xiàng)測(cè)試中,我選用了 50 個(gè)最受歡迎的網(wǎng)頁(yè),并記錄了所有正則表達(dá)式的操作。 每個(gè)操作都被賦予權(quán)重,該權(quán)重是根據(jù)頁(yè)面流行度的估計(jì)以及在加載每個(gè)頁(yè)面時(shí)執(zhí)行的次數(shù)來(lái)計(jì)算的。 最后,數(shù)據(jù)中的字母使用 ROT13 進(jìn)行編碼,其方式不會(huì)影響正則表達(dá)式與輸入的匹配程度。

PyPy 的測(cè)試結(jié)果讓人大跌眼鏡,不知道它都經(jīng)歷了些什么......

補(bǔ)充:PyPy 后來(lái)看到了這項(xiàng)測(cè)試結(jié)果,花了幾個(gè)小時(shí)把問(wèn)題修復(fù)了

Python 3 比 Python 2 快嗎?

綜上測(cè)試所述,答案是 Yes!雖然也有幾項(xiàng)測(cè)試結(jié)果顯示 Python 3 比 Python 2 慢:

  • 加密測(cè)試:Python 3 的比 Python2 慢 1.35 倍(原因在上文已做解釋?zhuān)?/p>

  • 啟動(dòng)時(shí)間測(cè)試:Python 3 比 Python 2 慢 1.39 倍

但從整體結(jié)果來(lái)看,Python 3 更快。CPython 核心開(kāi)發(fā)團(tuán)隊(duì)曾表示,啟動(dòng)速度問(wèn)題是他們?cè)?3.8 和 3.9 版本中著重要解決的問(wèn)題。

PyPy 很快,我要使用它嗎?

PyPy 有 JIT 即時(shí)編譯器,在執(zhí)行可預(yù)測(cè)的重復(fù)性任務(wù)時(shí)非常高效,而 Python 性能測(cè)試需要多次運(yùn)行同一段代碼來(lái)保證準(zhǔn)確性,因此,PyPy 面對(duì)這種測(cè)試性能,表現(xiàn)比 CPython 更佳。

但是,PyPy 的 JIT 編譯器的顯著缺點(diǎn)就是啟動(dòng)成本高,并且,許多 C 語(yǔ)言擴(kuò)展程序缺乏兼容性。另外,由于 PyPy 是用 Python 編寫(xiě)的,許多模板在 PyPy 中無(wú)法工作,使用者需要時(shí)常進(jìn)行檢查。

PyPy 也同樣需要面對(duì)從 Python2 向 Python3 轉(zhuǎn)變的問(wèn)題。PyPy3 還不太穩(wěn)定,PyTest 就已經(jīng)放棄了對(duì) PyPy3 的支持。

結(jié)論

Python 在所有官方版本測(cè)試中表現(xiàn)最佳,PyPy 在解釋器測(cè)試的表現(xiàn)最佳。Python 2 以后會(huì)用得越來(lái)越少,直到廢棄。如果 PyPy 3 的速度始終不能比 PyPy 快,能有所提升也是好的。

責(zé)任編輯:張燕妮 來(lái)源: Hackermoon
相關(guān)推薦

2022-06-28 07:40:54

JVM線程開(kāi)源

2018-07-05 11:05:10

2020-06-18 12:23:05

WiFi速度5G

2013-01-28 14:59:27

2021-05-19 07:35:00

MySQL數(shù)據(jù)庫(kù)COUNT

2016-02-17 08:36:05

IT職業(yè)

2024-09-26 12:33:29

JSAPI循環(huán)

2017-05-26 15:57:54

深度學(xué)習(xí)人工智能

2025-02-21 10:46:16

JSForEachAPI

2021-12-06 09:40:44

Pythonforwhile

2020-09-29 09:46:16

網(wǎng)絡(luò)安全

2023-06-22 09:20:56

測(cè)試JavaScript框架

2022-05-23 09:20:00

數(shù)據(jù)庫(kù)架構(gòu)

2022-07-27 13:19:38

云戰(zhàn)略中國(guó)云

2014-04-16 09:15:10

騰訊大數(shù)據(jù)

2011-08-15 10:51:25

SSAS父子維度

2021-01-22 18:25:42

政務(wù)數(shù)據(jù)安全

2021-08-13 11:06:05

Kubernetes優(yōu)化運(yùn)維

2016-03-08 11:37:24

技術(shù)管理技術(shù)思維

2015-05-19 09:28:17

網(wǎng)速
點(diǎn)贊
收藏

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