我搜索了一段时间,发现了一些合理的说法,即 CPython 的编译允许更快地执行 Python 代码。不过,我想知道是否有人知道任何可以证明加速程度的基准。
或者,也许有一种简单的方法可以让我对其进行基准测试。是否可以在运行时提供 Python 标志来关闭编译?
我搜索了一段时间,发现了一些合理的说法,即 CPython 的编译允许更快地执行 Python 代码。不过,我想知道是否有人知道任何可以证明加速程度的基准。
或者,也许有一种简单的方法可以让我对其进行基准测试。是否可以在运行时提供 Python 标志来关闭编译?
cpython运行的所有代码都必须编译成字节码才能运行。这就是解释器的工作方式,您可能无法合理地更改它(不编写自己的解释器)。
但是,默认情况下,已加载模块的编译字节码将缓存在.pyc
文件中。这意味着下次加载它时不需要再次编译。字节码缓存可能是您听说过的,因为它可以大大加快以前使用的模块的导入速度。但是,加载模块后它不会改变性能。
-B
您可以使用命令行选项或PYTHONDONTWRITEBYTECODE
环境变量禁用字节码缓存。如果您想测试速度差异,您可能还需要删除任何现有缓存。在 Python 2 中,编译后的字节码将被写入源.pyc
文件旁边的.py
文件中。在 Python 3 中,这已更改为使用一个__pycache__
文件夹,该文件夹可以保存.pyc
来自不同版本的 Python 的多个文件(因此您可以一次拥有多个缓存版本,请参阅PEP 3147了解更多详细信息)。