在优化代码的慢速部分时,我惊讶于A.sum()
几乎是以下两倍的事实A.max()
:
In [1]: A = arange(10*20*30*40).reshape(10, 20, 30, 40) In [2]: %timeit A.max() 1000 loops, best of 3: 216 us per loop In [3]: %timeit A.sum() 10000 loops, best of 3: 119 us per loop In [4]: %timeit A.any() 1000 loops, best of 3: 217 us per loop
我原本预计A.any()
会更快(它应该只检查一个元素!),然后A.max()
,这A.sum()
将是最慢的(sum()
需要添加数字并每次更新一个值,max
需要每次比较数字并有时更新,我认为添加应该比比较慢.事实上,情况正好相反.为什么?