与C++的许多情况不同,Python显然不足以优化冗余操作,即使在常数之间也是如此。
我做了一个简单的基准测试来测试math.cos的进出循环。
在第一个例子中,我使用python计算cos(3)
1000万次
:
from datetime import *
from math import *
ini = datetime.now()
for a in range(10000000):
x = cos(0)
fim = datetime.now()
print(fim - ini)
结果是
0:00:01.360958
.
现在,只需更换
x = cos(0)
通过
x = 1
(或者只是放
cos(0)
在循环之外的变量中),时间大约为
快3倍
:
0:00:00.429995
现在,如果
cos (0)
操作总是生成一个常量(1),为什么Python不使用缓存优化执行,从而避免重复相同的操作
cos
持续运转?
python的哲学之一是让程序员的生活更容易。但在这种情况下,情况正好相反。