python 是否重新排序指令以进行优化?
Does python reorder instructions for optimization?
我知道 C 和 C++ 编译器会重新排序操作(只要 as-if 规则成立)以进行优化。编译后的 python 代码会发生类似的事情吗?
Python 是一种解释型语言。即使您将其“编译”为包含字节代码而非机器指令的 .pyc
文件。
重新排序字节码指令不太可能对性能产生任何影响。每个字节码对应于解释器本身的许多指令,因此指令重新排序所利用的流水线效应在这个高级别上不可用。
首先,Python本身既不被解释也不被编译; 语言的实现可以是其中之一。
也就是说,最常见的实现 (CPython) 会编译您的 Python 源代码。不过,目标不是您的处理器,而是一个虚拟堆栈机器,然后解释生成的字节代码。
重新排序指令是为了利用您的处理器一次执行多条指令的能力,交错进行指令获取、数据访问等操作。CPython 实现的堆栈机器并不那么复杂;无法将单个字节代码分解为更小的“微指令”,这些指令将受益于您正在考虑的 re-ordering 类型。
我知道 C 和 C++ 编译器会重新排序操作(只要 as-if 规则成立)以进行优化。编译后的 python 代码会发生类似的事情吗?
Python 是一种解释型语言。即使您将其“编译”为包含字节代码而非机器指令的 .pyc
文件。
重新排序字节码指令不太可能对性能产生任何影响。每个字节码对应于解释器本身的许多指令,因此指令重新排序所利用的流水线效应在这个高级别上不可用。
首先,Python本身既不被解释也不被编译; 语言的实现可以是其中之一。
也就是说,最常见的实现 (CPython) 会编译您的 Python 源代码。不过,目标不是您的处理器,而是一个虚拟堆栈机器,然后解释生成的字节代码。
重新排序指令是为了利用您的处理器一次执行多条指令的能力,交错进行指令获取、数据访问等操作。CPython 实现的堆栈机器并不那么复杂;无法将单个字节代码分解为更小的“微指令”,这些指令将受益于您正在考虑的 re-ordering 类型。