国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

4 個快速的 Python 編譯器 for 2018

YancyYe / 1547人閱讀

摘要:但是由于程序并沒有那么快,開發(fā)人員多年來創(chuàng)建了幾個的編譯器,包括和。在下面的細(xì)分中,所有的編譯器都針對進行基準(zhǔn)測試。編譯器是系列的一部分,旨在作為的現(xiàn)代替代品。不僅僅是的編譯器,它是的超集,支持與的互操作性。

簡評:Python 和其他的解釋型語言一樣經(jīng)常被吐槽性能不行,所以開發(fā)人員為了提升性能創(chuàng)建了不少編譯器,本文則選取其中的四個做了基準(zhǔn)測試。

Python 其實是一種相當(dāng)快的語言,但它并不像編譯型語言那么快。 這是因為官方實現(xiàn)的 CPython 解釋執(zhí)行的,更準(zhǔn)確地說,是 Python 代碼被編譯為字節(jié)碼,然后進行解釋。這對學(xué)習(xí)是很有好處的,因為可以在 Python REPL 中運行代碼并立即查看結(jié)果,而不必編譯和執(zhí)行。 但是由于 Python 程序并沒有那么快,開發(fā)人員多年來創(chuàng)建了幾個 Python 的編譯器,包括 IronPython 和 Jython。

快速的性能并不是編譯的唯一原因,可能諸如 Python 之類的腳本語言最大的缺點是你需要隱式地向客戶提供源代碼。

我想比較同一平臺上的一些 Python 編譯器,特別是那些支持 Python 3.x 的編譯器。最后,我選擇了四個,都在 Ubuntu Linux上運行,他們是 Nuitka,PyPy,Cython 和 cx_Freeze。

比較 Python 編譯器

有人已經(jīng)完成了創(chuàng)建 Python 基準(zhǔn)測試的工作。我選擇了 PyStone,這是 Python 的創(chuàng)建者Guido van Rossum 對 C 程序的翻譯(而 C 程序本身是 Ada 程序的翻譯)。 我在 GitHub 上找到了開發(fā)人員 Christopher Arndt 的轉(zhuǎn)換版本,它能夠兼容 Python 3。 下面是 Pystone 的CPython(即標(biāo)準(zhǔn) Python)性能:

Python 2.7.15Rc1 2 : 272,647 pystones/second.
Python 3.6.5       : 175,817

正如你所看到的,Python 2 和 Python 3 之間有很大的區(qū)別(每秒 Pystones 越多越好)。在下面的細(xì)分中,所有的 Python 編譯器都針對 Python 3 進行基準(zhǔn)測試。

Nuitka

盡管可以按照下載頁面上的說明操作,但 Ubuntu 上的只需:

$ sudo apt install Nuitka

Nuitka 還需要一個 C 編譯器,所以我下載了 clang。可以使用以下方法安裝它:

$ sudo apt install clang

Nuitka 默認(rèn)使用 gcc,但是一個參數(shù)允許你使用 clang,所以我用兩者測試了它。 clang 編譯器是 llvm 系列的一部分,旨在作為 gcc 的現(xiàn)代替代品。使用 gcc 編譯 pystone.py 就像這個(第一行)一樣簡單,或者使用 clang(第二行),并使用鏈接時間優(yōu)化 gcc(第三行):

$ nuitka pystone.py
$ nuitka pystone.py --clang
$ nuitka pystone.py --lto

編譯(大約 10 秒鐘)完成后,我從終端運行了 pystone:

$ ./pystone.exe 500000 

結(jié)果是

Size  Execution pystones/sec
1. 223.176 Kb  597,000
2. 195,424 Kb  610,000
3. 194.2   kb  600,000

這些是 5 次運行的平均值,我盡可能多地關(guān)閉了進程。

PyPy

Guido van Rossum 曾經(jīng)說過:「如果你希望你的代碼運行得更快,你應(yīng)該只使用PyPy。」我將編譯好的二進制文件下載到一個文件夾中,并將 pystone.py 復(fù)制到其下的 bin 文件夾中。然后我像這樣運行:

$ ./pypy3.5 pystone.py

結(jié)果是驚人的 1,776,001 pystones/sec,幾乎是 Nuitka 的三倍。

PyPy 使用即時編譯器并做了一些非常巧妙的東西來實現(xiàn)它的速度。根據(jù)基準(zhǔn)測試的報告,它平均比 CPython 快 7.6 倍。 我很容易相信。 唯一(輕微)的缺點是它總是落后于 Python 版本。

生成一個 EXE 需要一些工作,你必須將你的 Python 編寫成一個名為 RPython 的子集。

Cython

Cython 不僅僅是 Python 的編譯器,它是 Python 的超集,支持與 C / C++ 的互操作性。 CPython是用 C 編寫的,所以它是一種通常可以很好地與 Python 混編的語言。

使用 Cython 進行設(shè)置有點繁瑣,它不像 Nuitka 那樣開箱即用。首先,必須從擴展名為 .pyx的 Python 文件開始,你運行 Cython 來創(chuàng)建一個 pystone.c 文件:

$ cython pystone.pyx --embed

不要忽略 –embed 參數(shù),接下來,你用這條命令編譯 pystone.c:

$ gcc $(python3-config --includes) pystone.c -lpython3.6m -o pystone.exe

如果遇到任何錯誤,例如「找不到 -lpython 版本」,則可能是因為你的 Python 版本。要查看安裝的版本,請運行以下命令:

$ pkg-config --cflags python3

畢竟,Cython 只給出 228,527 pystones/sec,但是,Cython 需要你做一些指定變量類型的工作。Python 是一種動態(tài)語言,因此沒有指定類型, Cython 使用靜態(tài)編譯,使用 C 類型變量可以產(chǎn)生更好的優(yōu)化代碼。 (文檔相當(dāng)廣泛,需要閱讀。)

Size  Execution pystones/sec
1. 219,552 Kb  228,527
cx_freeze

這是一套用于將 Python 腳本「凍結(jié)」為可執(zhí)行文件的腳本和模塊,可以在GitHub上找到。我安裝了它并創(chuàng)建了一個凍結(jié)文件夾來管理內(nèi)容:

$ sudo pip3 install cx_Freeze --upgrade

我在安裝腳本中發(fā)現(xiàn)的一個問題是缺少“l(fā)z”的錯誤。你需要安裝 zlib 運行它來安裝它:

$ sudo apt install zlib1g-dev

之后,cx_Freeze 命令使用 pystone.py 腳本創(chuàng)建了一個 dist 文件夾,其中包含一個 lib 文件夾,一個 5MB 的 lib 文件和 pystone 應(yīng)用程序文件:

$ cxfreeze pystone.py --target-dir dist
Size  Execution pystones/sec
1. 10,216   174,822

不是最快的性能,因為它與 CPython 的速度相同。 (Python 凍結(jié)包括將應(yīng)用程序與所需的Python 元素一起放在單個文件(或文件夾)中,而不是編譯,這意味著目標(biāo)不需要Python。)

結(jié)論

我對 PyPy 的表現(xiàn)感到敬畏,編譯非常快,在按下回車鍵后不到一秒就產(chǎn)生了結(jié)果。 如果你想要一個 exe,我推薦 Nuitka,這是一個不費吹灰之力的編譯,運行速度比 CPython 快。你也可以自己試用這些 Python 編譯器,看看哪種方法最適合特定需求。

原文:4 Fast Python Compilers for 2018

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/42051.html

相關(guān)文章

  • SegmentFault 技術(shù)周刊 Vol.40 - 2018,來學(xué)習(xí)一門新編程語言吧!

    摘要:入門,第一個這是一門很新的語言,年前后正式公布,算起來是比較年輕的編程語言了,更重要的是它是面向程序員的函數(shù)式編程語言,它的代碼運行在之上。它通過編輯類工具,帶來了先進的編輯體驗,增強了語言服務(wù)。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不覺已經(jīng)到來了,總結(jié)過去的 2017,相信小伙們一定有很多收獲...

    caspar 評論0 收藏0
  • SegmentFault 技術(shù)周刊 Vol.40 - 2018,來學(xué)習(xí)一門新編程語言吧!

    摘要:入門,第一個這是一門很新的語言,年前后正式公布,算起來是比較年輕的編程語言了,更重要的是它是面向程序員的函數(shù)式編程語言,它的代碼運行在之上。它通過編輯類工具,帶來了先進的編輯體驗,增強了語言服務(wù)。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不覺已經(jīng)到來了,總結(jié)過去的 2017,相信小伙們一定有很多收獲...

    nihao 評論0 收藏0
  • SegmentFault 技術(shù)周刊 Vol.40 - 2018,來學(xué)習(xí)一門新編程語言吧!

    摘要:入門,第一個這是一門很新的語言,年前后正式公布,算起來是比較年輕的編程語言了,更重要的是它是面向程序員的函數(shù)式編程語言,它的代碼運行在之上。它通過編輯類工具,帶來了先進的編輯體驗,增強了語言服務(wù)。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不覺已經(jīng)到來了,總結(jié)過去的 2017,相信小伙們一定有很多收獲...

    Drummor 評論0 收藏0
  • 如何快速掌握Python數(shù)據(jù)采集與網(wǎng)絡(luò)爬蟲技術(shù)

    摘要:通過本文的學(xué)習(xí),可以快速掌握網(wǎng)絡(luò)爬蟲基礎(chǔ),結(jié)合實戰(zhàn)練習(xí),寫出一些簡單的爬蟲項目。從技術(shù)手段來說,網(wǎng)絡(luò)爬蟲有多種實現(xiàn)方案,如。二網(wǎng)絡(luò)爬蟲技術(shù)基礎(chǔ)在本次課中,將使用技術(shù)手段進行項目的編寫。 摘要:本文詳細(xì)講解了python網(wǎng)絡(luò)爬蟲,并介紹抓包分析等技術(shù),實戰(zhàn)訓(xùn)練三個網(wǎng)絡(luò)爬蟲案例,并簡單補充了常見的反爬策略與反爬攻克手段。通過本文的學(xué)習(xí),可以快速掌握網(wǎng)絡(luò)爬蟲基礎(chǔ),結(jié)合實戰(zhàn)練習(xí),寫出一些簡單的...

    W4n9Hu1 評論0 收藏0
  • Python入門-Python簡介

    摘要:年月宣布支持時間延長到年。更詳細(xì)的發(fā)布列表參閱官網(wǎng)的版本號分為三段,形如。其中表示大版本號,一般當(dāng)整體重寫,或出現(xiàn)不向后兼容的改變時,增加表示功能更新,出現(xiàn)新功能時增加表示小的改動如修復(fù)了某個,只要有修改就增加。年公司正式發(fā)布。 < 返回索引頁 Python語言簡介 Python介紹及發(fā)展 介紹 Python 官方網(wǎng)站:https://www.python.org/, 大家可以到此處下...

    Java_oldboy 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<