Psyco
![本页使用了标题或全文手工转换](http://images.weserv.nl/?url=//upload.wikimedia.org/wikipedia/commons/thumb/c/cd/Zh_conversion_icon_m.svg/35px-Zh_conversion_icon_m.svg.png)
开发者 | Armin Rigo、Christian Tismer |
---|---|
源代码库 | |
操作系统 | 跨平台 |
类型 | 即时编译 |
许可协议 | MIT许可证 |
网站 | psyco |
Psyco(普斯科)是 Python 语言的一个扩展模块,可以即时对程序代码进行专业的算法优化,可以在一定程度上提高程序的执行速度,尤其是在程序中有大量循环操作时。最早被 Armin Rigo 开发,后来由 Christian Tismer 维护并继续完善。
Psyco 可以在 32位 的 GNU/Linux、BSD、Mac OS X、Microsoft Windows 平台上运行。Psyco 使用 C语言 编写,只针对32位平台进行了编码。目前开发工作已经停止,由 PyPy 所接替,同时 PyPy 也提供针对 64位 系统的支持。Psyco 可以在 Python解释器 编译代码时自动优化,将其使用C实现,并针对循环操作进行一些特殊的优化。经过这些优化,程序的性能将会得到提升,在跨平台环境下尤为明显。
性能提升
对于密集计算型程序,Psyco 可以显著提升程序的执行速度。实际的提升决定于程序的具体实现,曾经有人获得了高达100倍的提升,也有的时候因为需要额外加载 Psyco 模块反倒带来了轻微的性能下降。[1][2][3][4] 经过调查,在典型的应用上,Psyco 平均可以提供 1.5至4 倍的性能提升。这帮助 Python 的性能达到了 Smalltalk 和 Scheme 的水准,但是仍然 Fortran 与 C这样的编译语言,或是一些 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]
引用
- ^ Python Psyco benchmarks. [2008-04-24]. (原始内容存档于2008-06-06).
- ^ Python Psyco Homepage at sourceforge. [2009-03-04]. (原始内容存档于2019-11-29).
- ^ A beginners guide to using Python for performance computing at scipy.org. [2009-03-04]. (原始内容存档于2009-03-11).
- ^ Charming Python: Make Python run as fast as C with Psyco. [2009-03-04]. (原始内容存档于2012-07-05).
- ^ Boxplot Summary. [2009-10-16]. (原始内容存档于2011-06-03).
- ^ Rigo, Armin. Quick examples. The Ultimate Psyco Guide. [3 June 2011]. (原始内容存档于2011-05-07).
- ^ Announcement on pypy-dev mailing list with links to project page. [2013-04-18]. (原始内容存档于2009-07-20).
- ^ Psyco Homepage. [2013-04-18]. (原始内容存档于2020-05-16).
参阅
- Cython
- PyPy
- Unladen Swallow
- YARV (Yet another Ruby VM)
外部链接
- The Psyco home page(页面存档备份,存于互联网档案馆)
- David Mertz's IBM developerWorks article: Make Python run as fast as C with Psyco
- psyco notes, Poor Yorick
|