当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《什么是LLVM以及如何用LLVM替换PythonVM的速度提高5倍?》经验,为你挑选了3个好方法。

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

Unladen-Swallow似乎有一个很好的项目计划

为什么并发这么难?
LLVM是否会解决并发问题?
硬件推进的多核之外是否有其他解决方案?



1> Ismael..:

LLVM是几个共同的东西 - 一种虚拟机/优化编译器,结合不同的前端,它采用特定语言的输入并以中间语言输出结果.此中间输出可以与虚拟机一起运行,也可以用于生成独立的可执行文件.

并发性的问题在于,虽然它在科学计算中使用了很长时间,但它最近在消费者应用程序中已经变得很普遍.因此,虽然众所周知如何编写科学计算程序来实现卓越性能,但编写一个兼容并发性的邮件用户代理/文字处理器却完全不同.此外,目前大多数操作系统的设计都考虑了单个处理器,它们可能无法为多核处理器做好充分准备.

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

当然,量子计算机,遗传计算机等硬件还有更多可能的进展.但我们必须等待它们成为现实.


@Ismael:我不认为这是科学与非科学应用的问题.真正的问题是语言和操作系统对并发编程的支持很糟糕,有些人愿意更加努力地克服对并发性的错误支持.

2> DNS..:

切换到LLVM本身并不能解决并发问题.这是通过摆脱Global Interpreter Lock单独解决的.

我不确定我的感受; 我主要使用线程来处理阻塞I/O,而不是利用多核处理器(为此,我会使用该multiprocessing模块来产生单独的进程).

所以我有点像GIL; 它让我的生活变得更加容易,而不必考虑棘手的同步问题.


如果他们可以摆脱GIL,但确保你期望的所有原子性仍然是原子的,那么我认为它应该在最坏的情况下对你没有影响,并且在某些情况下可以改善你的应用程序的性能.

3> Rhamphoryncu..:

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

换句话说,LLVM不能解决并发问题,它只是释放你的手,所以你可以解决它.

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有