MachineLearning icon indicating copy to clipboard operation
MachineLearning copied to clipboard

Time.timeit 应该去除wrapt.dectator 自身的时间

Open wztdream opened this issue 5 years ago • 0 comments

您好, 读过您写的书,收获很大,谢谢。 有一个疑问,如题。Time.timeit利用wrapt.dectator来计算一个函数的执行时间。通常是没有问题的。但是如果是一个嵌套函数,外层函数的计时就是:内层函数执行时间+wrapt 自身执行的时间。如果内层函数被执行n次,那么外层函数的计时时间就多出了n*(wrapt 自身执行时间),这可能导致时间分析不准确。比如下面的例子, outer()的总时间被错误的多计时了(100000000*wrap时间)。不知道有没有办法在wrapt之间进行通讯,来扣除内部wrapt 自身的时间(不是inner函数的执行时间哈)

@timing.timeit()
def inner():
    print("inner")
@timing.timeit()
def outter():
   for i in range(100000000):
        inner()
    print("outer")

wztdream avatar Apr 27 '20 13:04 wztdream