我发现,当我向Python提出更多要求时,python并未100%使用我的机器资源,而且速度不是很快,与许多其他解释型语言相比,它很快,但是与编译语言相比,我认为区别是真的很棒。
是否可以使用Python 3中的即时(JIT)编译器来加快处理速度?
通常,只有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编译器还是提前编译器运行程序,这都是正确的。如果您想让某些事情变得更快,那么请不要全力以赴以获得更快的语言实现。有些应用程序在解释和动态性方面是不可行的,但它们并不像您想像的那样普遍(通常,通过有选择地调用由机器代码编译的代码来解决)。