我对我的函数进行计时,以确定高执行时间的来源,并注意到循环内的累积时间远低于循环本身的时间
我使用一个全局变量Node.sstats来存储累积时间,即在每次迭代中,存储总时间的变量都会增加
我简化了我的代码,但我不相信它改变了问题。I循环计时(t3-t2)以及循环内的累积时间(t5-t4)。t3-t2的时间比t5-t4大10倍。因此,循环时间远大于循环内容的累积时间。我还检查了全局变量Node.ksstats(t5b-t5)的更新时间与总循环时间相比并不显著(<;1%)。那么,循环机制本身是原因还是与内存访问有关
这是我的密码
t2 = time.time()
for a in range(0, d):
t4 = time.time()
t6 = time.time()
kurt[a], moments[a] = ik.incr_kurtosis(X[:,a], moments[a])
t7 = time.time()
Node.ksstats[2] += (t7- t6)
kurt[a] = log(kurt[a] + 1)
summ += kurt[a]
# measure the cumulative time of the loop contents
t5 = time.time()
Node.ksstats[3] += (t5-t4)
# measure cumulative time to update ksstats variable
t5b= time.time()
Node.ksstats[5] += (t5b-t5)
# time entire for loop
t3 = time.time()
Node.ksstats[4] += (t3 - t2)
更新
我仍然不确定发生了什么,但我通过更新循环中的本地ksstats变量而不是类变量Node.ksstats,使循环的内部时间和外部时间相等
目前没有回答
相关问题 更多 >
编程相关推荐