繁体   English   中英

如何提高Python中以下代码的性能?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM