gpt4 book ai didi

python - 为什么 .sum() 比 .any() 或 .max() 快?

转载 作者:太空狗 更新时间:2023-10-29 21:58:38 26 4
gpt4 key购买 nike

在优化代码的缓慢部分时,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 需要每次都比较数字并有时更新,我认为添加应该比比较慢)。事实上,恰恰相反。为什么?

最佳答案

max 必须存储一个值,不断检查 潜在的更新(并且 CPU 需要执行分支操作来实现这些)。 sum 只是对值进行搅动。

所以 sum 会更快。

关于python - 为什么 .sum() 比 .any() 或 .max() 快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22392185/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com