Psyco

維基百科,自由的百科全書
跳至導覽 跳至搜尋
Psyco
開發者Armin Rigo、Christian Tismer
目前版本1.6(2007年12月16日,​18年前​(2007-12-16
原始碼庫
  • {{URL|example.com|可选的显示文本}}
Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
引擎
    Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
    作業系統跨平台
    類型即時編譯
    授權條款MIT授權條款
    網站psyco.sourceforge.net

    Psyco(普斯科)是 Python 語言的一個擴充模組,可以即時對程式碼進行專業的演算法最佳化,可以在一定程度上提高程式的執行速度,尤其是在程式中有大量迴圈操作時。最早被 Armin Rigo 開發,後來由 Christian Tismer 維護並繼續完善。

    Psyco 可以在 32位元GNU/LinuxBSDMac OS XMicrosoft Windows 平台上執行。Psyco 使用 C語言 編寫,只針對32位元平台進行了編碼。目前開發工作已經停止,由 PyPy 所接替,同時 PyPy 也提供針對 64位元 系統的支援。Psyco 可以在 Python直譯器 編譯代碼時自動最佳化,將其使用C實現,並針對迴圈操作進行一些特殊的最佳化。經過這些最佳化,程式的效能將會得到提升,在跨平台環境下尤為明顯。

    效能提升[編輯]

    對於密集計算型程式,Psyco 可以顯著提升程式的執行速度。實際的提升決定於程式的具體實現,曾經有人獲得了高達100倍的提升,也有的時候因為需要額外載入 Psyco 模組反倒帶來了輕微的效能下降。[1][2][3][4] 經過調查,在典型的應用上,Psyco 平均可以提供 1.5至4 倍的效能提升。這幫助 Python 的效能達到了 SmalltalkScheme 的水準,但是仍然 FortranC這樣的編譯語言,或是一些 JIT 語言如 C#Java有所差距。[5]

    Psyco 宣稱自己是非常易用的,事實也確實如此。最簡單的 Psyco 最佳化只需要在程式開始處放置兩行代碼:[6]

    import psyco
    psyco.full()
    

    這兩行指令會讓 Python直譯器 載入 Psyco 模組,並對接下來的指令碼進行最佳化。對於小的程式來說,這相當的方便;但是大型工程來說,加入這些的工作量並不低,通常可以藉助自動化指令碼來完成。

    進一步的動態[編輯]

    在2009年7月17日,Christian Tismer 宣布了 Psyco V2 的計劃。[7] 然而,在2012年3月12日,Psyco 專案首頁上宣布 Psyco 停止維護並正式結束,由 Pypy 所接替。[8]

    參照[編輯]

    1. ^ Python Psyco benchmarks. [2008-04-24]. (原始內容存檔於2008-06-06). 
    2. ^ Python Psyco Homepage at sourceforge. [2009-03-04]. (原始內容存檔於2019-11-29). 
    3. ^ A beginners guide to using Python for performance computing at scipy.org. [2009-03-04]. (原始內容存檔於2009-03-11). 
    4. ^ Charming Python: Make Python run as fast as C with Psyco. [2009-03-04]. (原始內容存檔於2012-07-05). 
    5. ^ Boxplot Summary. [2009-10-16]. (原始內容存檔於2011-06-03). 
    6. ^ Rigo, Armin. Quick examples. The Ultimate Psyco Guide. [3 June 2011]. (原始內容存檔於2011-05-07). 
    7. ^ Announcement on pypy-dev mailing list with links to project page. [2013-04-18]. (原始內容存檔於2009-07-20). 
    8. ^ Psyco Homepage. [2013-04-18]. (原始內容存檔於2020-05-16). 

    參閱[編輯]

    外部連結[編輯]