您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python 3解释器是否具有JIT功能?

Python 3解释器是否具有JIT功能?

首先,Python 3(.x)是一种语言,它可以有许多实现。好的,到目前为止,除cpython之外,没有其他实现实际实现这些语言的版本。但这将改变(PyPy正在追赶)。

要回答您要问的问题:cpython(3.x或其他版本)不包含,也从未包含并且可能永远不会包含JIT编译器。其他一些Python实现(本机为PyPy,Jython和IronPython,通过在其构建的虚拟机上重新使用JIT编译器)确实具有JIT编译器。而且,当他们添加Python 3支持时,他们的JIT编译器没有理由停止工作。

但是当我在这里时,也让我解决一个误解:

通常,只有JIT编译器才能提高解释语言的性能

这是不正确的。JIT编译器以其最基本的形式,仅消除了解释器开销,这可以解决您看到的某些速度下降,但不能解决大多数问题。一个 好的 JIT编译器还执行了许多优化,这些优化通常消除了实现众多Python功能所需的开销(通过检测允许更有效实现的特殊情况),其中突出的例子是动态类型,多态性和各种自省特性。

仅仅实现 一个 编译器不会与帮助。您需要非常巧妙的优化,其中大多数仅在非常特定的情况下并且在有限的时间范围内有效。JIT编译器在这里很容易,因为它们可以在运行时生成专用代码(这是它们的重点),可以通过在运行时观察程序来更轻松(更准确)地分析程序,并且可以在无效时撤消优化。与提前编译器不同,它们还可以与解释器进行交互,并且经常这样做是因为这是明智的设计决策。我想这就是为什么他们与人们心目中的口译员联系在一起的原因,尽管他们可以而且确实独立存在。

除了优化解释器的代码本身之外,还有其他一些方法可以使Python的实现更快,例如HotPy(2)项目。但是,这些代码目前处于研究或实验阶段,还没有显示它们在实际代码中的有效性(和成熟度)。

当然,特定程序的性能对程序本身的依赖远不止于语言实现。语言实现只为您执行一系列操作的速度设置了上限。通常,您可以通过避免不必要的工作(即通过优化程序)来更好地提高程序的性能。不管您是通过解释器,JIT编译器还是提前编译器运行程序,这都是正确的。如果您想让某些事情变得更快,那么请不要全力以赴以获得更快的语言实现。有些应用程序在解释和动态性方面是不可行的,但它们并不像您想像的那样普遍(通常,通过有选择地调用由机器代码编译的代码解决)。

python 2022/1/1 18:35:28 有222人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶