[英]How to improve performance of the following code in Python?
for i in range(N):
for j in range(M):
l2 = numpy.argmin(numpy.abs(s - dE[i,j]))
A[l1,l2] = A[l1,l2] + (n[j]+1)*I[i,j]
基本上,它的作用是在s
数组中定位dE[i,j]
的值,并将相应的值(n[j]+1)*I[i,j]
到该位置。 反正有避免for循环吗?
从技术上讲for i, j in it.product(range(N), range(M)): do_something()
您可以for i, j in it.product(range(N), range(M)): do_something()
使用for i, j in it.product(range(N), range(M)): do_something()
,但是老实说,瓶颈在于argmin
和循环的时间复杂度:您处在缓慢的领域由于您的算法设计。 如果可能的话,请考虑寻找重构的方法,或者,如果性能过高且没有重构的方法,请使用C编写扩展。
如果性能不是瓶颈,YAGNI:您将不需要它。 过早的优化是万恶之源。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.