代码之家  ›  专栏  ›  技术社区  ›  lprsd

什么是llvm?如何用llvm替换python vm以提高5倍的速度?

  •  26
  • lprsd  · 技术社区  · 16 年前

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

    Unladen-Swallow 似乎有一个 good project plan

    为什么并发性是一个如此困难的问题?
    LLVM是否要解决并发性问题?
    是否有多核以外的硬件升级解决方案?

    3 回复  |  直到 12 年前
        1
  •  32
  •   Ismael    12 年前

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

    并发性的问题是,尽管它在科学计算中使用了很长时间,但最近它在消费者应用程序中已经变得很普遍。因此,尽管人们普遍知道如何编写科学的计算程序以获得良好的性能,但是编写一个能够很好地实现并发性的邮件用户代理/字处理器是完全不同的。此外,目前大多数操作系统都是以单处理器设计的,它们可能还没有完全为多核处理器做好准备。

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

    当然,在诸如量子计算机、遗传学计算机等硬件方面还有更多可能的进展,但我们必须等待它们成为现实。

        2
  •  17
  •   DNS    16 年前

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

    我不确定我对此的看法;我主要使用线程来处理阻塞I/O,而不是利用多核处理器(为此,我将使用 multiprocessing 生成单独进程的模块)。

    所以我有点喜欢gil;它让我的生活更容易,不必考虑棘手的同步问题。

        3
  •  15
  •   Rhamphoryncus    16 年前

    LLVM负责代码生成的细节,因此它允许他们以更通用、可移植、可维护的方式重写psyco。这反过来又允许他们重写cpython核心,这使得他们可以尝试使用备用的gcs和其他改进Python对并发性的支持所需的东西。

    换句话说,LLVM并不能解决并发性问题,它只是解放您的双手,这样您就可以解决它。