【发布时间】:2015-06-27 21:16:51
【问题描述】:
我有一组 n 向量存储在 3 x n 矩阵 z 中。我使用np.einsum 找到外部产品。当我使用它计时时:
%timeit v=np.einsum('i...,j...->ij...',z,z)
我得到了结果:
The slowest run took 7.23 times longer than the fastest. This could mean that an
intermediate result is being cached
100000 loops, best of 3: 2.9 µs per loop
这里发生了什么,可以避免吗?最好的 3 是 2.9us,但最慢的可能更典型。
【问题讨论】:
-
出于测试目的,尝试增加
n的大小,这将减少存储在CPU 缓存中的z的比例,并且消息会在某个时候消失 -
报告说有 100000 个循环。缓存可以从第一个循环到其余循环吗?如果是这样,那么我们只需要第一个循环的时间。
标签: numpy ipython benchmarking vectorization