python3性能還低嗎_Python3 vs. Python2 大作戰,誰將是性能之王?

渲染 HTML 模板

django_html 測試將使用 Django 模板渲染引擎來構建一個 150x150 的 HTML 表格。 它利用了 Django 引擎的 Content 和 Template 類。

0279d41bfc2249f99a867678dc6b032f.png

如圖所示,Python 3.7 比 Python 2.7 快 1.19 倍,但除此之外,其他 Python 3 版本都沒有 Python 2.7 快。該結果與 speed.python.org 網站的測試結果一致。

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

啟動時間測試

該部分測試解釋器的啟動時間

c53779f9e16146e2b79b93496a8c5556.png

如圖所示,Python 2.7 是所有測試版本中啟動速度最快的。

注:此處暫不討論 PyPy 的測試結果,文末再談。

加密測試(Crypto):crypto_paes

5917282ecb364ef4acadccc0c1bea365.png

在這個測試中,Python 2 的速度明顯快于 Python 3,因為 Crypto 要求大量數字運算,而 Python 3 沒有 32 位整數類型,只有一個長整型(long integer)。

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

算法測試:n-queens

af7c05bdfe6946fa9c4b7d63b5d86a35.png

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

浮點運算測試

“浮點”基準測試需要人工創建繁重的浮點運算應用程序,在這里我們通過 math.cos(),math.sin() 和 math.sqrt() 函數創建,總共創建 10 萬個浮點對象。

dece86ccb10d4681bd880d8f5a743e15.png

PyPy 非常適合浮點運算,在大量的數字運算、可預測的類型和方法以及循環上展現了非常優秀的性能。Python 3.7 具有新的方法能快速調用操作碼,該操作碼正在此測試中剛好用上,表現佳。

正則表達式測試

在這項測試中,我選用了 50 個最受歡迎的網頁,并記錄了所有正則表達式的操作。 每個操作都被賦予權重,該權重是根據頁面流行度的估計以及在加載每個頁面時執行的次數來計算的。 最后,數據中的字母使用 ROT13 進行編碼,其方式不會影響正則表達式與輸入的匹配程度。

05cd23c3fc9f4579a0dca4cf7860e98e.png

PyPy 的測試結果讓人大跌眼鏡,不知道它都經歷了些什么......

補充:后來發現是 PyPy 性能出了問題,PyPy 開發團隊后來看到了這項測試結果,花了幾個小時把性能問題修復了

5d35e23adf16478ca35403a59112e6f4.png

Python 3 比 Python 2 快嗎?

綜上測試所述,答案是 Yes!雖然也有幾項測試結果顯示 Python 3 比 Python 2 慢:

加密測試:Python 3 的比 Python2 慢 1.35 倍(原因在上文已做解釋)

啟動時間測試:Python 3 比 Python 2 慢 1.39 倍

但從整體結果來看,Python 3 更快。CPython 核心開發團隊曾表示,啟動速度問題是他們在 3.8 和 3.9 版本中著重要解決的問題。

PyPy 很快,我要使用它嗎?

PyPy 有 JIT 及時編譯器,在執行可預測的重復性任務時非常高效,而 Python 性能測試需要多次運行同一段代碼來保證準確性,因此,PyPy 面對這樣測試性能,表現比 CPython 更佳。

但是,PyPy 的 JIT 編譯器的顯著缺點就是啟動成本高,并且,許多 C 語言擴展程序缺乏兼容性。另外,由于 PyPy 是用 Python 編寫的,許多模板在 PyPy 中無法工作,使用者需要時常進行檢查。

PyPy 也同樣需要面對從 Python2 向 Python3 轉變的問題。PyPy3 還不太穩定,PyTest 就已經放棄了對 PyPy3 的支持。

結論

Python 在所有官方版本測試中表現最佳,PyPy 在解釋器測試的表現最佳。Python 2 以后會用得越來越少,直到廢棄。如果 PyPy 3 的速度始終不能比 PyPy 快,能有所提升也是好的。返回搜狐,查看更多

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/276805.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/276805.shtml
英文地址,請注明出處:http://en.pswp.cn/news/276805.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python day08

一 文件處理補充 控制文件中光標移動 1 f.read(n): l.文件打開方式為文本模式的時,代表讀取N個字符 ll.文件打開方式為b模式時,讀取N個字節 強調:只有在read(n)模式下 N代表字符個數,除此之外的是以字節為單位 2 f.seek(): 光標移動是以字節為單位的整數移動. 三種模式:(分別為…

百度地圖移動端開發和ArcGIS for Android 開發入門

打開鏈接http://pan.baidu.com/s/1eQpFNWY,可以查看 轉載于:https://www.cnblogs.com/David-Young/p/3827058.html

VSCode 小雞湯 第00期 —— 安裝和入門

簡介 這將是一個新的系列,將會以 Visual Studio Code(后文都簡稱為 VSCode 啦)的操作,環境配置,插件介紹為主,為大家不定期的介紹 VSCode 的一些操作技巧,所以取名 VSCode 小雞湯,本…

.net生成文字圖片

System.Drawing.Bitmap bmpnew Bitmap(Bitmap.FromFile(Server.MapPath("42.jpg")));//載入圖片 System.Drawing.Graphics gGraphics.FromImage(bmp); g.DrawString("abcd測試",new Font("黑體",18),new SolidBrush(Co…

python可以調用windows資源嗎_如何在Windows上用Python調用WinRar?還有問題嗎

使用zipfile模塊,我創建了一個腳本來提取我的歸檔文件,但是這個方法會破壞除txt文件之外的所有內容。在def unzip(zip): filelist [] dumpfold rM:\SVN_EReportingZones\eReportingZones\data\input\26012012 storage rM:\SVN_EReportingZones\eRepor…

SQLServer、Mysql、Oracle 創建、刪除用戶和授予用戶權限

SQLServer 1、創建用戶 CREATE LOGIN [用戶名稱] WITH PASSWORD用戶密碼, DEFAULT_DATABASE[默認數據庫名稱], CHECK_EXPIRATIONOFF, CHECK_POLICYOFF GO USE [數據庫名稱] GO CREATE USER [用戶名稱] FOR LOGIN [用戶名稱] WITH DEFAULT_SCHEMA[dbo] GO 2、授予全庫只讀權限 A…

一次緩存性能問題排查

概述以下分享的都跳過了很多坑,包括redis、tomcat環境配置、機器硬件配置等等問題(與線上保持一致,或者硬件性能減配系數,例如線上:8C16G,壓測:4C8G,系數簡單相差2倍)&am…

python 多個列表_Python同時迭代多個列表

沒有人會記得死的東西,所以要活下去,咬牙切齒的活下去! import sys from itertools import chain from random import randint reload(sys) sys.setdefaultencoding(utf-8) 案例一 要求:一個班級有10個人,考試語數外三…

再讀新疆系列(六)——吹拂“卡拉庫里湖”的風

一下飛機,導游王雪作了簡短的自我介紹,馬不停蹄地帶著我們經喀什市區直接向帕米爾高原的“卡拉庫里”湖走。 問午飯在哪吃? 答:“湖邊”。 “幾點能到?” “大約下午二點多。”媽呀,又經歷一次殘酷的饑餓歷…

記錄一次webpack3升級到webpack4過程

升級之前也參考了一些網上的教程。借鑒之,進行的自己的升級。一些版本為什么設為那個版本號也是參考別人的結果。 整體是按照先升級npm run dev;在升級npm run build的順序。 首先升級webpack,在package.json文件中將webpack版本號修改為4.8.…

linux時間修改-hwclock和date

修改系統時間date 設定日期:date -s 月/日/年,例如設定日期為2018年12月1日,date -s 12/01/2018(年也可以是兩位) 設定時間:date -s hh:mm:ss,例如設定時間為21:15:38,date -s 21:15…

判斷一個字符串是否為回文的遞歸算法

//編譯器&#xff1a;GCC 4.2.1 運行環境&#xff1a;Redflag Linux 6.0 Desktop //如果在VC下編譯可能要加入string和algorithm兩個頭文件并修改函數返回值類型 #include<iostream>using namespace std;int Ifhw(string s,string q,int &i){if(s[i]q[i]&&i!…

plsql如何執行存儲過程_如何理解Spark應用的執行過程

從Spark應用的提交到執行完成有很多步驟&#xff0c;為了便于理解&#xff0c;我們把應用執行的整個過程劃分為三個階段。而我們知道Spark有多種運行模式&#xff0c;不同模式下這三個階段的執行流程也不相同。本文介紹這三個階段的劃分&#xff0c;并概要介紹不同模式下各個階…

JS高級:事件冒泡和事件捕獲;

1、事件&#xff1a;瀏覽器客戶端上客戶觸發的行為成為時事件&#xff1b;所有的事件都是天生自帶的&#xff0c;不需要我們去綁定&#xff0c;只需要我們去觸發 當用戶觸發一個事件時&#xff0c;瀏覽器的所有詳細信息都存在一個叫做event的對象上&#xff0c;我們把它叫做事件…

Vue于React特性對比(三)

最近重學React&#xff0c;再次和vue做了對比。 一&#xff0c;為官方插件提供便利的第三方插件橫行 React僅僅是一個ui框架。雖然官方提供了redux&#xff0c;react-router&#xff1b;但也有第三方的redux-thunk&#xff0c;redux-saga&#xff1b;還有react-router-dom。 而…

MYsql 安裝后啟動服務1067錯誤

今天很奇怪的問題&#xff0c; 新安裝好的數據庫 啟動服務的時候就提示1067錯誤&#xff0c; 在網上找了資料是這樣說的&#xff1a;MYSQL1067錯誤這里看 *************1安裝&#xff2d;&#xff39;&#xff33;&#xff31;&#xff2c;后更改了&#xff32;&#xff2f;&am…

vc如何打開plt圖像_圖像基本操作-open cv

import cv2 import matplotlib.pyplot as plt import numpy as np %matplotlib inline img cv2.imread(revolte.jpg) img # 讀取的是array 格式 array([[[240, 243, 255],[239, 242, 255],[238, 241, 255],...,def cv_show(name,image):cv2.imshow(name,image)cv2.waitKey(0)c…

自學編程需要注意什么?

1。選合適自己的職業&#xff0c;不同的職業門檻不一樣&#xff0c;難度不一樣&#xff0c;或多或少總有差別。 笨的選JS&#xff0c;有點底子的選Java&#xff0c;半調子的選Android或者是IOS-如果這兩個職業還沒完蛋的話。 不想寫代碼的選PM和UI&#xff0c;要求不高的選QA&a…

帆軟報表(finereport)table塊鉆取,返回記住table塊位置

<1>首先table塊加初始化事件&#xff0c;idex為參數&#xff0c;參數值為$tab_idexsetTimeout(function(){_g().getWidgetByName("tabpane0").showCardByIndex(Number(idex)); },10) <2>在table塊鉆取位置&#xff0c;加js事件鉆取var u navigator.user…

python調用api應用接口_Python接口測試之urllib2庫應用

在接口測試中或者說在網絡爬蟲中&#xff0c;urllib2庫是必須要掌握的一個庫&#xff0c;當然還有優秀的requests庫&#xff0c;今天重點來說urllib2庫在接口測試中的應用。urllib2定義了很多的函數和類&#xff0c;這些函數和類能夠幫助我們在復雜情況下獲取URLS的內容。這些情…