2011-12-04 76 views
0

如果我用Python語言編寫程序,然後使用這些編譯器編譯:是否像C++代碼一樣快地編譯python代碼?

戈登·麥克米蘭的安裝程序(跨平臺)

托馬斯·海勒的py2exe

(Windows)中安東尼Tuininga的cx_Freeze (跨平臺)

是否與用編譯語言編寫的代碼一樣快?

回答

14

這些工具不是編譯器,它們只是將python代碼打包成一個更容易啓動的應用程序。如果你想要更類似於編譯的東西,請嘗試http://pypy.org(JIT for python)或http://code.google.com/p/shedskin(它將Python轉換爲C++)。

+2

注意,前者仍然是一個解釋器(一個聰明的,對於大多數代碼提供可觀的速度提升,但仍然沒有超過AOT編譯的C除了有一點做與真正的節目精心構造的基準更快)和後者只接受一個小的「足夠靜態」的Python子集。對於這個問題,RPython(由PyPy後面的人,事實上用於PyPy)做了類似的事情,但可能更好(他們已經發現了一個非常聰明的方法,並且有很多時間來改進它 - OTOH我偏置)。 – delnan

2

爲了提高速度,你可能還想研究一下Cython,它允許用Python語言編寫Python的C擴展。

0

Google最近發佈了Grumpy,它在編譯之前將Python轉換爲Go。期望的是軟件將以這種方式運行得更快,並繞過臭名昭着的Python GIL,從而實現真正的多線程。

Grumpy是一個Python to Go源代碼的反編譯器和運行庫,它是 ,旨在成爲CPython 2.7的一款即將推出的替代產品。與 關鍵不同的是,它將Python源代碼編譯爲Go源代碼 ,然後將其編譯爲本地代碼,而不是字節碼。這個 意味着Grumpy沒有虛擬機。編譯後的Go源代碼是對Grumpy運行時調用的一系列 ,Go庫是爲Python C API提供類似用途 (雖然不直接支持C API)。