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