guz*_*guz 58 python jit python-3.x
我发现当我向Python提出更多要求时,python不会以100%的速度使用我的机器资源而且速度不是很快,与许多其他解释语言相比它速度很快,但与编译语言相比,我认为不同之处在于非常了不起.
使用Python 3中的Just In Time(JIT)编译器可以加快速度吗?
通常JIT编译器是唯一可以提高解释语言性能的东西,所以我指的是这个,如果其他解决方案可用,我很乐意接受新的答案.
小智 62
首先,Python 3(.x)是一种语言,可以有任意数量的实现.好的,直到今天,除了CPython之外没有任何实现实际上实现了该语言的那些版本.但这会改变(PyPy正在迎头赶上).
要回答你想要提出的问题:CPython,3.x或者其他方式,不会,从来没有,也可能永远不会包含JIT编译器.其他一些Python实现(PyPy本身,Jython和IronPython通过为他们构建的虚拟机重用JIT编译器)确实有一个JIT编译器.并且没有理由他们的JIT编译器在添加Python 3支持时会停止工作.
但是,当我在这里时,也让我解决一个误解:
通常,JIT编译器是唯一可以提高解释语言性能的东西
这是不正确的.JIT编译器,以其最基本的形式,只是消除了解释器开销,这可以解释您看到的一些减速,但不是大多数.一个好的 JIT编译器还执行一系列优化,这些优化消除了实现大量Python功能所需的开销(通过检测允许更有效实现的特殊情况),突出的例子是动态类型,多态和各种内省功能.
仅仅实现一个编译器不会与帮助.您需要非常聪明的优化,其中大多数仅在非常特定的情况下以及在有限的时间窗口内有效.JIT编译器在这里很容易,因为它们可以在运行时生成专用代码(这是它们的全部要点),可以通过在运行时观察它来更容易(更准确地)分析程序,并且可以在它们变为无效时撤消优化.与提前编译器不同,他们还可以与口译员互动,并且经常这样做,因为这是一个明智的设计决策.我想这就是为什么它们与人们心中的翻译有关,尽管它们可以并且确实独立存在.
除了优化解释器的代码本身之外,还有其他方法可以使Python实现更快 - 例如,HotPy(2)项目.但是那些目前处于研究或实验阶段,尚未显示其实际代码的有效性(和成熟度).
当然,特定程序的性能取决于程序本身,而不仅仅是语言实现.语言实现仅设置了一系列操作的速度的上限.通常,只需避免不必要的工作,即通过优化程序,就可以更好地提高程序的性能.无论您是通过解释器,JIT编译器还是提前编译器运行程序,都是如此.如果你想要快速的东西,不要忘记更快的语言实现.有些应用程序在解释和动态性方面的开销是不可行的,但它们并不像你想象的那么普遍(通常通过选择性地调用机器代码编译代码来解决).
Ngu*_*aga 14
唯一具有JIT的Python实现是PyPy.Byt - PyPy是Python 2实现,而不是Python 3实现.您可以支持Python 3端口.
Numba项目应该适用于Python 3.虽然它不是你提出的问题,但你可能想尝试一下:https: //github.com/numba/numba/blob/master/docs/source/doc/userguide .rst.
它目前不支持所有Python语法.
归档时间: |
|
查看次数: |
36913 次 |
最近记录: |