什么是LLVM?用LLVM替换Python VM的速度是如何提高5倍的?

什么是LLVM?用LLVM替换Python VM的速度是如何提高5倍的?,python,multicore,llvm,unladen-swallow,Python,Multicore,Llvm,Unladen Swallow,谷歌正在赞助一个开源项目,将Python的速度提高5倍 似乎有一个 为什么并发性是一个如此困难的问题 LLVM会解决并发问题吗 除了多核硬件升级,还有其他解决方案吗?是一种虚拟机/优化编译器,与不同的前端相结合,以特定语言输入,以中间语言输出结果。此中间输出可以与虚拟机一起运行,也可以用于生成独立的可执行文件 并发的问题是,尽管它在科学计算中使用了很长时间,但最近才在消费类应用中变得很普遍。因此,尽管人们都知道如何编写一个科学的计算程序来实现出色的性能,但编写一个善于并发的邮件用户代理/字处理器

谷歌正在赞助一个开源项目,将Python的速度提高5倍

似乎有一个

为什么并发性是一个如此困难的问题
LLVM会解决并发问题吗
除了多核硬件升级,还有其他解决方案吗?

是一种虚拟机/优化编译器,与不同的前端相结合,以特定语言输入,以中间语言输出结果。此中间输出可以与虚拟机一起运行,也可以用于生成独立的可执行文件

并发的问题是,尽管它在科学计算中使用了很长时间,但最近才在消费类应用中变得很普遍。因此,尽管人们都知道如何编写一个科学的计算程序来实现出色的性能,但编写一个善于并发的邮件用户代理/字处理器则是完全不同的事情。此外,当前大多数操作系统的设计都考虑到了单处理器,它们可能还没有为多核处理器做好充分准备

LLVM在并发性方面的好处是,您有一个中间输出,如果将来并发性有了进步,那么通过更新解释器,您可以在所有LLVM编译的程序中立即获得这些好处。如果编译成独立的可执行文件,这就不那么容易了。因此LLVM本身并不能解决并发问题,但它为将来的增强留下了一扇大门


当然,量子计算机、遗传学计算机等硬件可能会有更多的进步,但我们必须等待它们成为现实。

切换到LLVM本身并不能解决并发问题。这是分开解决的,方法是去掉

我不知道我对此有何感想;我使用线程主要处理阻塞I/O,而不是利用多核处理器(为此,我将使用
多处理
模块生成单独的进程)


所以我有点喜欢吉尔;它使我的生活更加轻松,不必考虑复杂的同步问题。

LLVM负责代码生成的细节,因此它允许他们以更通用、可移植和可维护的方式重写Psyco。这反过来又允许他们重写CPython核心,这让他们可以使用备用GCs和其他改进python对并发性的支持所需的东西进行实验


换句话说,LLVM并不能解决并发性问题,它只是让您腾出双手来解决它。

这不是一个问题。我至少看到三个,可能是四个。你能让我问所有不同的问题吗?在某种程度上,它们都是相关的。不是吗?:)“Py3k似乎已经解决了内存占用问题(通过返回迭代器而不是列表);现在,如果LLVM解决了速度问题?”问题是什么?有一个隐含的问题。。。但这是什么还不清楚。是的,这里的问题太多了@TofuBeer:编辑了最后一部分,并删除了它,它确实可能适合于另一个问题如果他们可以去除GIL,但确保你期望的所有原子都是原子的,那么我认为最坏的情况应该是对你没有影响,在某些情况下可以提高应用程序的性能。@Ismael:我不认为这是科学应用程序与非科学应用程序之间的问题。真正的问题是语言和操作系统对并发编程的支持不好,一些人愿意更努力地克服对并发性的支持不好。@Lott:是的,你是对的。尽管有一些工具可以在编程时考虑并发性,但它们很难使用,需要付出很大的努力。