日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

深入剖析PyPy,解鎖Python比C還快的秘訣

來源: 責編: 時間:2024-01-16 17:31:12 203觀看
導讀對于研究人員來說,迅速把想法代碼化并查看其是否行得通至關重要。Python 是能夠實現這一目標的出色語言,它能夠讓人們專注于想法本身,而不必過度為代碼格式等無聊的事情困擾。但是,Python 有一個致命的缺點:速度比 C、C ++

對于研究人員來說,迅速把想法代碼化并查看其是否行得通至關重要。Python 是能夠實現這一目標的出色語言,它能夠讓人們專注于想法本身,而不必過度為代碼格式等無聊的事情困擾。NBM28資訊網——每日最新資訊28at.com

但是,Python 有一個致命的缺點:速度比 C、C ++ 等語言慢很多。那么,構建一個 Python 原型測試想法之后,如何將其轉變為快速且高性能的工具?通常來說,人們還要再進行一步工作:將 Python 代碼手動轉換為 C 語言的代碼。但如果 Python 原型本身就可以運行得很快,那么轉換代碼的時間就可以做一些更有意義的事情。NBM28資訊網——每日最新資訊28at.com

而 PyPy,恰好可以解決這一問題。它能夠讓 Python 代碼運行得比 C 還快。NBM28資訊網——每日最新資訊28at.com

import timefrom termcolor import coloredstart = time.time()number = 0for i in range(100000000):    number += iprint(colored("FINISHED", "green"))print(f"Ellapsed time: {time.time() - start} s")

為了證明 PyPy 的速度,使用默認的 Python 解釋器和 PyPy 運行上述代碼,執行一個從整數 0 加到 100,000,000 的循環, 然后打印出運行時間。運行結果如下:NBM28資訊網——每日最新資訊28at.com

運行時間 Python vs PyPy運行時間 Python vs PyPyNBM28資訊網——每日最新資訊28at.com

這不是學術意義上的評估,但該結果是令人驚嘆的。與大約需要 10 秒鐘的默認 Python 解釋器相比,PyPy 僅用 0.22 秒就完成了執行。而且無需進行任何更改就可以直接將 Python 代碼放到 PyPy 上。而同一臺計算機上,等效的 C 語言實現需要 0.32 秒,PyPy 甚至擊敗了最快的 C 語言。NBM28資訊網——每日最新資訊28at.com

為什么 PyPy 這么快?

盡管代碼完全相同,但代碼的執行方式卻大不相同。PyPy 提升速度的秘訣是「即時編譯( just-in-time compilation)」,即 JIT 編譯。NBM28資訊網——每日最新資訊28at.com

提前編譯 

C、C ++、Swift、Haskell、Rust 等編程語言通常是提前編譯(AOT 編譯)的。這意味著用這些語言編寫代碼之后,編譯器會將源代碼轉換成特定計算機架構可讀的機器碼。也就是說在執行程序時,執行的并不是原始源代碼,而是機器碼。NBM28資訊網——每日最新資訊28at.com

提前編譯把源代碼轉化為機器代碼提前編譯把源代碼轉化為機器代碼NBM28資訊網——每日最新資訊28at.com

解釋語言 

與 C 語言等上述語言不同,Python、JavaScript、PHP 等語言采用另一種方法——解釋語言。與將源代碼轉換為機器碼相比,解釋的過程中源代碼是保持不變的。每次運行程序時,解釋器都會逐行查看代碼并運行。例如,每個 Web 瀏覽器都內置了 JavaScript 解釋器。NBM28資訊網——每日最新資訊28at.com

解釋器逐行運行程序解釋器逐行運行程序NBM28資訊網——每日最新資訊28at.com

即時編譯

PyPy 是利用即時編譯來執行 Python 代碼的。即 PyPy 不同于解釋器,它并不會逐行運行代碼,而是在執行程序前先將部分代碼編譯成機器碼。NBM28資訊網——每日最新資訊28at.com

JIT 編譯綜合了提前編譯和解釋JIT 編譯綜合了提前編譯和解釋NBM28資訊網——每日最新資訊28at.com

如上圖所示,而 PyPy 使用的 JIT 編譯是解釋和提前編譯的結合,可以利用提前編譯來提高性能,并提高解釋型語言的靈活性和跨平臺可用性。NBM28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-62786-0.html深入剖析PyPy,解鎖Python比C還快的秘訣

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 漫威電影《驚奇隊長 2》上線流媒體平臺,含 Apple TV、Prime Video、Vudu

下一篇: 提高代碼效率的六個Python內存優化技巧

標簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 绥化市| 汤阴县| 武定县| 河北区| 乌苏市| 车致| 丰县| 河津市| 牡丹江市| 寿光市| 遂昌县| 宝山区| 凯里市| 云浮市| 佛学| 肇源县| 甘孜县| 潞城市| 济阳县| 铜川市| 辽源市| 平度市| 公主岭市| 阳春市| 九寨沟县| 西林县| 广元市| 连南| 阿勒泰市| 灵石县| 霍州市| 龙井市| 扎兰屯市| 武汉市| 宁陵县| 义乌市| 靖安县| 勃利县| 神农架林区| 盘山县| 彩票|