让a
和b
成为长度为1024的numpy.float
个数组,用
cdef numpy.ndarray a
cdef numpy.ndarray b
我注意到:
cdef int i
for i in range(1024):
b[i] += a[i]
比以下慢得多:
b += a
为什么?
我真的需要能够在数组上手动循环。
答案 0 :(得分:3)
如果您告诉Cython数据类型以及a
和b
的维度数量,差异会更小:
cdef numpy.ndarray[np.float64_t, ndim=1] a, b
虽然差异会更小,但你不会超过b += a
,因为这是使用NumPy的SIMD提升功能(根据你的CPU是否支持SIMD,它会起作用)。