中间有google掺和的被LLVM加强火力的Python
http://code.google.com/p/unladen-swallow/
http://developer.51cto.com/art/200907/136422.htm
Unladen Swallow 2009 Q2项目将作为CPython运行库的一个分支来实现,使之和平常的Python程序与原生扩展实现完整的原始兼容。
查看:http://code.google.com/p/unladen-swallow/wiki/Release2009Q2
Google的Python工程师们公布了一个新项目:Unladen Swallow,它目的是给Python编程语言带来性能上的提升,这些提升主要是通过提高了5倍的运行库速度来实现。该项目将作为CPython运行库的一个分支来实现,使之和平常的Python程序与原生扩展实现完整的原始兼容。
这到最后将改进整个Python的性能。Unladen Swallow项目的目标是使用LLVM(低级虚拟机)编译器基础结构来建立一个JIT(实时)编译引擎,该引擎可以取代Python自身的虚拟机。该计划将使得把Python过渡到基于寄存器的虚拟机上成为可能,而且为未来的优化铺平道路。
采用LLVM还可以为Python代码整合其他语言敞开大门,因为基础的LLVM中间级代理很大程度上属于语言中立性。
http://www.javaeye.com/news/8912-unladen-swallow-2009q2-released
什么是Unladen Swallow?简而言之就是一个新的python的实现(目的是提升python的性能),是由google赞助的,详细的介绍可以看这里:
http://code.google.com/p/unladen-swallow/wiki/ProjectPlan
今天它发布了2009 Q2,也就是它的计划的第二个阶段的成果。
主要的更新有:
1 使用llvm来将一些hot functions编译成本地代码。而且-j选项也可以强制编译为本地代码。
2 相对于2009Q1 性能有了很大的提升。
3 一堆bug被fix。
4 测试更加广泛,比如在Twisted, Django, NumPy 和Swig都进行了测试。
这个版本最大的特性,其实就是通过llvm提供jit。。
详细的更新以及测试可以看这边:
http://code.google.com/p/unladen-swallow/wiki/Release2009Q2
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
我已经在很多地方使用Python而不是C++了,因为敲键盘次数更少,速度?哈哈,看上面。反编译?你开玩笑?你反LLV一下试试看。
不懂python,不过据说挺流行的,习惯了shell/awk/sed,它们也能干很多事情
bc语言用来计算也是棒级了,但很少有人去用
这些工具对我来说已经足够棒了
shell/awk/sed对我来说学习成本有些高,而且我要考虑新进员工的学习成本,如何快速进入开发状态。
再者,我要考虑保密性,脚本的保密性是不行的,传统的Python也是不行的,LLV加强火力之后就OK了。bc awk sed这些工具我可以在Python里面调用。
Python的好处是我可以拿他来做主力开发语言,这样代码也统一,不会很多种语言,造成项目管理起来麻烦。
通过对比,PHP好像不适合做通用开发,而Web在我们的产品中分量很小。Ruby呢?和Perl一样的魔幻,我喜欢简单直接的,不喜欢炫的,因为我们开发要考虑人力成本和交流成本的,我不希望代码是不可交流的。Lua呢?有些太小了,无法很好的独立使用。TCL就算了,剩下的我不了解。
Python的好处在于代码量比C++少很多,而且可以作为一种通用语言,复杂程度又和C差不多简单直接,性能呢?LLV加强之后又会差距不大,而且我有时间的话也可以自己把Python改成编译型的,所以,就Python了。
Python程序员比C程序员好培养,而我只需要在Python虚拟机上手脚一下,就可以让一般Python程序员的生产力水平和比较高的C程序员差不多。
本来我写了一些代码生成器,因为我实在不想重复的写着“客户的需求”,引擎+脚本的实现大大解放了我的思考,但是,还不够,我要进一步解放思想,发展生产力。
每天还要买菜,洗菜,做饭,炒菜,洗碗,刷锅,洗衣服,拖地,还要看孩子,我那么忙,哪儿有时间写那么多无聊的代码啊?不自动化我能活么?
[ 本帖最后由 prolj 于 2009-9-9 23:47 编辑 ]
现在已经考虑兼容带孩子了?
实时编译引擎是把代码最终整成机器代码吗?
不转换为机器码,只是不再生成pyc,而生成llvm bitcode,由lli来解释执行,传统的python vm就没事了。
洗衣服真累,我就是不喜欢用洗衣机。看孩子更累,哎,小家伙精力旺盛啊。
只是不再生成pyc,而生成llvm bitcode,由lli来解释执行,传统的python vm就没事了
====
好强大
一直以来搞的llvm终于用上了
google是一个有灵性的公司,在众多的阵地向垄断的微软开始进攻,google在搜索方面的垄断让我担忧,他会不会推行霸权主义,mysql走向商业公司,现在在oracle下成为鸡肋,被商业毁掉了。众所周知python因为支持桌面共享计算的BT而成名,希望google不要毁掉python。
寄存器虚拟机lua早就使用了,不过指令很简单只有37条,原来我也看不上寄存器虚拟机,现在看来perl6的parrot、python都开始有所应用了,java也有寄存器虚拟机的实现,好像就是google搞的,java平台很混乱,多种前端、后端的非官方实现。