我正在使用tensorflow提供的the profiler tool。以下是分析结果的一个快照:
我的问题:数据后两个百分比数字的含义是什么?
答案 0 :(得分:2)
第一个数字是使用的总内存/在功能中花费的时间的百分比,而第二个数字是在不分配/花费的功能中使用的内存百分比/花费的时间在内部函数中。通常这些被称为包容性(包括函数中的函数)和独占性(不包括函数中的函数)。
我会对时间进行解释,但它对内存分析的作用相同。
这是因为分析器只测量每个函数调用的时间。例如,如果你有:
def func1():
# something
func2()
# something
def func2():
# something
让我们假设func1()
呼叫的探查者在func1
花费了1000毫秒并且750ms
花费在func2
上,那么这些数字将是:
func1 100% 25%
func2 75%
因为func1
花费了100%的时间 - 但只有25%((1000毫秒 - 750毫秒)/ 1000毫秒)的时间用在func1
isn' t 花在func2
上。同样,func2
总共花费了75%(750毫秒/ 1000毫秒)。在此示例中,func2
的第二个数字也将是75%,因为我没有包含任何代码,但如果内部还有其他函数,那么将应用相同的数学运算。所以不要混淆我没有把它包含在那里。
为了使它更有趣并包含另一个例子,假设你有:
def func1():
# something
func2()
# something
func3()
# something
def func2():
# something
def func3():
# something
分析器在func1
中测量为1000毫秒,在func2
中测量为200毫秒,在func3
中测量为500毫秒,该表将如下所示:
func1 100% (1000 / 1000) 30% ((1000 - 200 - 500) / 1000)
func2 20% ( 200 / 1000)
func3 50% ( 500 / 1000)