我正在阅读timeit模块的代码,我注意到了这一段:
gcold = gc.isenabled()
gc.disable()
timing = self.inner(it, self.timer)
if gcold:
gc.enable()
这只是存储垃圾收集的状态(打开或关闭),然后将其关闭.函数inner执行正在计时的语句.然后它将垃圾收集器恢复到旧状态.
所以我很好奇这是什么意思.如果被测试的代码在垃圾收集器中运行,那么不应该在测试中反映出来吗?我错过了什么?
解决方法:
垃圾收集的本质是它的频率和持续时间有些不可预测.至少从特定代码块的性能的角度来看,垃圾收集器只是将噪声添加到统计信息中.
从整个程序的角度来看,你是正确的,如果你的程序在运行垃圾收集器的系统上运行,那么在测量程序性能时应该考虑到这一点.但它通常不会考虑个别功能.