这是不固定的性能下降。NumPy发行3446。实际上 存在
短路逻辑,但是对
ufunc.reduce机器的更改在短路逻辑周围引入了不必要的基于块的外循环,并且该外循环不知道如何短路。您可以在此处看到关于分块机制的一些解释。
即使没有回归,短路影响也不会出现在您的测试中。首先,您要确定数组的创建时间,其次,我认为它们没有为布尔值的任何输入dtype放入短路逻辑。从讨论中,听起来好像后面的减少ufunc的机制的细节
numpy.any会变得如此困难。
讨论确实提出了令人惊讶的点,即
argminand
argmax方法似乎会因布尔输入而短路。快速测试显示,自NumPy
1.12(不是最新版本,而是Ideone当前使用的版本)开始,
x[x.argmax()]短路,并且它胜过竞争,
x.any()并且
x.max()对于一维布尔输入,无论输入是小还是大,并且没有短路是否还很重要。奇怪的!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)