为什么“ numpy.any”没有短路机制?

为什么“ numpy.any”没有短路机制?,第1张

为什么“ numpy.any”没有短路机制?

这是不固定的性能下降。NumPy发行3446。实际上 存在
短路逻辑,但是对

ufunc.reduce
机器的更改在短路逻辑周围引入了不必要的基于块的外循环,并且该外循环不知道如何短路。您可以在此处看到关于分块机制的一些解释。

即使没有回归,短路影响也不会出现在您的测试中。首先,您要确定数组的创建时间,其次,我认为它们没有为布尔值的任何输入dtype放入短路逻辑。从讨论中,听起来好像后面的减少ufunc的机制的细节

numpy.any
会变得如此困难。

讨论确实提出了令人惊讶的点,即

argmin
and
argmax
方法似乎会因布尔输入而短路。快速测试显示,自NumPy
1.12(不是最新版本,而是Ideone当前使用的版本)开始,
x[x.argmax()]
短路,并且它胜过竞争,
x.any()
并且
x.max()
对于一维布尔输入,无论输入是小还是大,并且没有短路是否还很重要。奇怪的!



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5646683.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存