我想知道是x**2还是x*x更快
def sqr(x):
for i in range (20):
x = x**2
return x
def sqr_(x):
for i in range (20):
x = x*x
return x
当我计时时,我得到的是:
The time it takes for x**2: 101230500
The time it takes for x*x: 201469200
我已经试过很多次了,它们要么相等,要么x**2比x*x快.但是x*x永远不会比x**2快.
所以我掩饰了代码:
对于x**2:
5 12 LOAD_FAST 0 (x)
14 LOAD_CONST 2 (2)
16 BINARY_POWER
18 STORE_FAST 0 (x)
20 JUMP_ABSOLUTE 8
对于x*x:
9 12 LOAD_FAST 0 (x)
14 LOAD_FAST 0 (x)
16 BINARY_MULTIPLY
18 STORE_FAST 0 (x)
20 JUMP_ABSOLUTE 8
它是关于load_const比load_fast稍微快一点吗?
LOAD_CONST:获取co_CONST的索引1处的文本值并将其推送
LOAD_FAST是通过索引访问数组中的值
或者二进制幂比二进制乘快(我实际上不知道二进制幂算法)?