首页 > 解决方案 > 对于冗余操作,Python 不是那么“聪明”

问题描述

与 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 的哲学之一是让程序员的生活更轻松。但在这种情况下,正在发生的事情恰恰相反。

标签: pythonpython-3.xperformancecachingoptimization

解决方案


因为你必须自己编程。这就是 C++ 的创造者所说的“高级语言”的意思。在他所有的书中。(不认真,它总是在一开始就存在。)我不认为 Python 是为了让程序员的生活更轻松,而是比高级语言更“昂贵”。


推荐阅读