本文介绍了为什么在编译为字节码时整数除法未优化?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 限时删除!! 首先,让我展示我做的实验:First, let me show a experiment I do:In [69]: dis.dis(lambda : 4 / 2 + 1.5 * 2 + (4 - 2)) 1 0 LOAD_CONST 1 (4) 3 LOAD_CONST 2 (2) 6 BINARY_DIVIDE 7 LOAD_CONST 4 (3.0) 10 BINARY_ADD 11 LOAD_CONST 5 (2) 14 BINARY_ADD 15 RETURN_VALUE如您在 dis.dis , 1.5 * 2 和 4-2 编译为 LOAD_CONST ,而不是两个 LOAD_CONSTAs you can see in the output of dis.dis, 1.5 * 2 and 4 - 2 get compiled to LOAD_CONST instead of two LOAD_CONST followed by a binary operation.但是 4/2 不会被 LOAD_CONST 4代替(2)。我想知道为什么在优化中没有除法。I wonder why is division left out in the optimisation.我使用的Python版本是2.7.5。The version of Python I use is 2.7.5. BTW,它是似乎在Python 3中,这样的函数得到了更好的优化,这就是我看到的:BTW, it seems that in Python 3, functions like this get better optimizations, here's what I see:>>> dis.dis(lambda : 4 / 2 + 1.5 * 2 + (4 - 2)) 1 0 LOAD_CONST 8 (7.0) 3 RETURN_VALUE推荐答案因为除法可以由以下因素控制Because division can be controlled by the following factors python -Q 命令行参数python -Q command line argument 来自__future__进口部门在编译时将无法用于窥视孔优化器。which will not be available to the peephole optimizer at the compile time.这在窥孔 这篇关于为什么在编译为字节码时整数除法未优化?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 1403页,肝出来的..
09-08 08:01