如何解决为什么 Python 循环在内部计时比在外部计时更快?
我正在为我的函数计时以找出高执行时间的来源,并注意到循环内的累积时间远低于循环本身的时间。
我使用全局变量 Node.sstats 来存储累积时间,即。每次迭代都会增加一个存储总时间的变量。
我简化了我的代码,但我认为它不会改变问题。我对循环 (t3-t2) 以及循环内的累积时间 (t5-t4) 计时。 t3 - t2 的时间是 t5 - t4 的 10 倍。因此,循环时间远大于循环内容的累计时间。我还检查了更新全局变量 Node.ksstats (t5b-t5) 的时间与总循环时间 (
这是我的代码
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 使循环内部和外部时间相等
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。