我有一个循环是特定函数中最耗费时间的部分,我想加快它的速度。当前,这个单一循环需要大约400毫秒的时间,而函数其他部分的执行只需要大约610毫秒。
代码如下:
for ctr in xrange(N):
list1[ctr] = in1[ctr] - in1[0] - ctr * c1
list2[ctr] = in2[ctr] - in2[0] - ctr * c2
list3[ctr] = c3 - in1[ctr]
list4[ctr] = c4 - in2[ctr]
N 的值可以从大约 40,000 到 120,000 不等,它是所有列表(in1、in2、listN)的长度。
有没有人知道一些 Python 技巧来加速这个过程?我已经尝试使用 map 来代替循环,因为我知道它会编译成更有效率的代码,但结果比原来慢了大约 250 毫秒。
谢谢。
np.linspace
可能比ctr * c1
和ctr * c2
更快。或者也可能不是,需要通过性能分析来确定。 - Michael J. Barberlinspace
只是做np.arange(0,num) * step + start
,因此我怀疑它比ctr * c1
更快。当然,正如你所说,这最好由分析确定,而我还没有检查过。无论如何,上面的代码片段仍有很多优化空间。 - Joe Kington