Psyco,一種 Python 專用編譯器,幫助平衡了這一競(jìng)爭(zhēng)。Psyco 現(xiàn)在是個(gè)外部模塊,但是在將來的某一天它可能會(huì)包括到 Python 本身中去。只需極少量的額外編程,通常就可以使用 Psyco 將 Python 代碼的速度提高好幾個(gè)數(shù)量級(jí)。
Python 的設(shè)計(jì)在很多方面都類似于 Java 的設(shè)計(jì)。兩者都利用了解釋專門的偽編譯字節(jié)碼的虛擬機(jī)。JVM 比 Python 更高級(jí)的一個(gè)方面在于優(yōu)化了字節(jié)碼的執(zhí)行。
PS:
Psyco 可以在 Python解釋器 編譯代碼時(shí)自動(dòng)優(yōu)化,將其使用C實(shí)現(xiàn),并針對(duì)循環(huán)操作進(jìn)行一些特殊的優(yōu)化。經(jīng)過這些優(yōu)化,程序的性能將會(huì)得到提升,在跨平臺(tái)環(huán)境下尤為明顯。
性能提升
對(duì)于密集計(jì)算型程序,Psyco 可以顯著提升程序的執(zhí)行速度。實(shí)際的提升決定于程序的具體實(shí)現(xiàn),曾經(jīng)有人獲得了高達(dá)100倍的提升,也有的時(shí)候因?yàn)樾枰~外加載 Psyco 模塊反倒帶來了輕微的性能下降。經(jīng)過調(diào)查,在典型的應(yīng)用上,Psyco 平均可以提供 1.5至4 倍的性能提升。這幫助 Python 的性能達(dá)到了 Smalltalk 和 Scheme 的水平,但是仍然與 Fortran 與 C這樣的編譯語言,或是一些 JIT 語言如 C# 和 Java有所差距。Psyco 宣稱自己是非常易用的,事實(shí)也確實(shí)如此。
最簡(jiǎn)單的 Psyco 優(yōu)化只需要在程序開始處放置兩行代碼:
import psyco
psyco.full()
這兩行指令會(huì)讓 Python解釋器 加載 Psyco 模塊,并對(duì)接下來的腳本進(jìn)行優(yōu)化。對(duì)于小的程序來說,這相當(dāng)?shù)姆奖;但是大型工程來說,加入這些的工作量并不低,通常可以借助自動(dòng)化腳本來完成。