字节码编译给Python代码带来了多大的加速?

字节码编译给Python代码带来了多大的加速?,python,performance,bytecode,cpython,Python,Performance,Bytecode,Cpython,我搜索了一段时间,发现了一些合理的说法,即CPython的编译允许更快地执行Python代码。不过,我想知道,是否有人知道任何可以证明加速程度的基准 或者,也许有一种简单的方法让我对其进行基准测试。是否可以在运行时提供Python标志以关闭编译?所有由cpython运行的代码必须先编译为字节码,然后才能运行。这就是解释器的工作方式,您可能无法合理地更改它(不编写自己的解释器) 但是,默认情况下,加载模块的编译字节码将缓存在.pyc文件中。这意味着下次加载时不需要再次编译它。您可能听说过字节码缓存

我搜索了一段时间,发现了一些合理的说法,即CPython的编译允许更快地执行Python代码。不过,我想知道,是否有人知道任何可以证明加速程度的基准


或者,也许有一种简单的方法让我对其进行基准测试。是否可以在运行时提供Python标志以关闭编译?

所有由cpython运行的代码必须先编译为字节码,然后才能运行。这就是解释器的工作方式,您可能无法合理地更改它(不编写自己的解释器)

但是,默认情况下,加载模块的编译字节码将缓存在
.pyc
文件中。这意味着下次加载时不需要再次编译它。您可能听说过字节码缓存,因为它可以将以前使用的模块的导入速度提高相当多。不过,在加载模块后,它不会改变性能


您可以使用
-B
命令行选项或
pythondotwritebytecode
环境变量禁用字节码缓存。如果要测试速度差异,可能还需要删除任何现有缓存。在Python2中,编译的字节码将被写入
.py
源文件旁边的
.py
文件中。在Python3中,这被更改为使用一个
\uuu pycache\uuuu
文件夹,该文件夹可以保存来自不同版本Python的多个
.pyc
文件(因此您可以同时拥有多个缓存版本,请参阅以了解更多详细信息)。

没有标记;为了让解释器直接解释AST,你必须重写大部分解释器(如果你想让解释器解释源代码而不将其解析为AST,你必须重写更多的解释器)。你是说Cython吗?当谈到解释器时,不合格的“Python”基本上是指CPython(与IronPython、Jython、PyPy等相比)。@NickT,我的问题怎么不清楚?我指定的是CPython,不是Cython,至少到目前为止。鉴于noone报告了任何关于通用代码加速的轶事证据,请您结束这个问题并编辑标题的前提,以避免传播错误信息?(还有:你说的是哪个版本:2013是非常古老的)。如果“是否有运行时选项来运行禁用字节码编译的Python?”的简短回答是“没有,没有这样的开关”,那么你甚至无法轻易地测量这一点,除非你创建自己的自定义构建(显然没有人愿意这么做),所以这个问题的前提是相当没有意义的。编译人员可以给出估计。或者你可以从中得到一个想法,这样你就可以看到最近的变化有多大的改进。谢谢!这很有帮助。不过,您知道有任何基准测试可以证明字节码编译所带来的加速吗?当然,在他们第一次测试该功能时进行了比较,是吗?