Pyston——基于LLVM和现代JIT技术的开源Python实现

编辑:光环大数据 来源: 互联网 时间: 2017-10-20 11:13 阅读:

  Pyston——基于LLVM和现代JIT技术的开源Python实现,本月初,KevinModzelewski在Dropbox技术博客上撰文宣布了他们正在开发的一款开源Python实现——Pyston。该项目的目标是开发出一款高性能的Python实现,使Python跻身如C++等传统系统级语言所统治的领域。

Dropbox内部有很多项目是用Python编写的。Python之父GuidovanRossum从Google离职后也加入了这家公司。随着业务规模的增长,性能问题也愈加突出。虽然通过其他语言改写应用可以获得性能改进,但出于对Python的钟爱,Dropbox的工程师们希望改变Python的性能。在使用静态编译做了一些实验之后,他们放弃了这种策略。鉴于Google的v8对JavaScript性能的极大改进,他们决定采用类似的技术来改进Python的性能。

现在已经有了一些采用了JIT技术的Python实现,比如PyPy,它使用的是基于Trace的JIT技术,大幅改进了Python的性能,再如Jython和IronPython,它们则构建于大量应用JIT技术的成熟虚拟机之上。那为什么还要引入一种新实现呢?文中给出的解释是:

简单地说,这是因为我们认为前景最好的技术与现有实现不兼容。例如,由于巨大的性能优势,JavaScript世界已经从基于Trace的JIT转向基于方法的JIT(每次编译一个方法)。在Python上是否有同样的优势尚不得而知,但因为这两种方法从根本上是不兼容的,所以要回答这个问题,唯一的方法是构建一个新的基于方法的JIT。

还有一点,他们计划使用保守的垃圾收集器,以便高效支持扩展模块。

当然,从零开始创建一个语言实现工作量非常大。不过Pyston准备基于LLVM构建,这会方便很多。

文中还介绍了Pyston的工作方式:

从高层看,Pyston接受解析好的Python代码,并将其转换为LLVM中间代码(IR)。然后IR经由LLVM优化器处理,再被传送给LLVMJIT引擎,最后得到可执行的机器代码。

Pyston的代码已经在Github上开放出来,Dropbox希望和Python及JIT社区合作推进其开发。项目页面上还介绍了Pyston的一些技术特色,比如编译层次、栈上替换和内联等,感兴趣的读者可以参考。

在Pyston之前,Google的几位工程师曾发起过UnladenSwallow项目,目标是将Python的性能提高5倍,主要想法是为CPython添加一个基于LLVM的JIT编译器,但是该项目以失败告终。关于该项目的经验与教训,有两篇文章可以参考:1.UnladenSwallow的失败与教训,以及关于Pypy;2.UnladenSwallowRetrospective。

关于Pyston,在HackerNews上也有一些讨论。比如haberman指出,基于方法的JIT编译器其实是更为传统的方式,而基于Trace的最近5~10年才流行起来的。尽管V8确实采用的是基于方法的JIT,Mozilla也放弃了基于Trace的JITTraceMonkey,但是LuaJIT却是最快的动态语言实现之一,而且采用的就是基于Trace的JIT。LuaJIT的作者MikePall认为TraceMonkey没有取得很好的性能,更大程度上是因为尝试将Trace绑到现有的虚拟机上,而不是因为基于Trace的JIT技术的缺点。

Facebook也为优化其PHP应用的性能做了很多工作,现在的解决方案是基于JIT的HHVM,这种方案可以说是成功的。那Pyston的前景如何呢?我们拭目以待。

  Python培训,就选光环大数据Python培训机构python学习地址:http://hadoop.aura.cn/python/


大数据培训、人工智能培训、Python培训、大数据培训机构、大数据培训班、数据分析培训、大数据可视化培训,就选光环大数据!光环大数据,聘请专业的大数据领域知名讲师,确保教学的整体质量与教学水准。讲师团及时掌握时代潮流技术,将前沿技能融入教学中,确保学生所学知识顺应时代所需。通过深入浅出、通俗易懂的教学方式,指导学生更快的掌握技能知识,成就上万个高薪就业学子。 更多问题咨询,欢迎点击------>>>>在线客服

你可能也喜欢这些

在线客服咨询

领取资料

X
立即免费领取

请准确填写您的信息

点击领取
#第三方统计代码(模版变量) '); })();
'); })();