让Python又快速又稳定的方法是什么?这个问题的答案,取决于你问的是谁。
如果是迅速成长的Pyston项目的创始人Dropbox,那么选择将会是从目前的Python着手,优化它的速度。如果是PyPy,那么选择就是更加Python的方式,用Python本身实现,加快它的速度。
两个项目相互竞争,让Python速度更快并不是一件坏事。事实上,这还可以让用户自己选择适合他们的方式。
Pyston的发展一直都很快。最新版本0.5.1,实现了JIT编译的Python,而Dropbox则充分利用这一点来提高性能。根据Dropbox的标准,Pyston不仅运行速度更快,启动速度也更快。启动速度慢一直是所有动态语言JIT编译器的通病,但是Pyston通过使用内联缓存和不同的JIT技术克服了这个问题。
在这些方面PyPy也卓有成就。四月份的5.1版本中,减少了脚本启动的时间,增加了对硬件类型和处理器的支持。多平台支持也是PyPy的一大卖点(通过Python的子集实现),让跨平台变得简单。PyPy在它的生态系统中还有很多有价值的工具:比如Python Debugger,可以向前和向后查看程序的状态。
Pyston和PyPy的一个巨大区别就是它们的向后兼容性。Python最大的优点是它大量的第三方库和应用,所以,如果一个Python实现不兼容这些库的话,就不算真正的Python。Pyston想要做到兼容C语言实现Python扩展,比如SciPy。
相比之下,PyPy在支持C语言编写的第三方库这方面一直存在问题,需要手动配置。而现在已受最受欢迎的数学和统计学库Numpy支持,也有很多库内置在PyPy中。
PyPy想要通过使用他们自己的C语言接口cffi来解决这个问题。相较于Python默认的C语言接口,Cffi是一个更快,更加Pythonic的实现,甚至很多非PyPy用户也很喜欢。但是,移植老的项目也并非微不足道的工作。
另一个主要的不同是,这些项目背后的负责人是谁。PyPy是一个由Armin Rigo募集资金、自发的一个项目。而Pyston则由Dropbox支持赞助。这个公司的雇员包括Python的创始人Guido van Rossum,其代码也会在Dropbox的产品中运行。
为什么Dropbox要重新开发一个项目呢?可能是因为PyPy并不能满足Dropbox的需求,或者Dropbox不想把技术风险压在一个别人的项目上,想要自己对项目有完全的控制,并满足自己的需求。
从短期来看,这意味这PyPy有了一个潜在资源;从长期来看,Python用户有了更多的选择:PyPy注重未来的生态,Pyston则强调兼容性。