解释tensorflow'中的两个百分比数字;谁是剖析器?

解释tensorflow'中的两个百分比数字;谁是剖析器?,tensorflow,profiling,Tensorflow,Profiling,我使用的是tensorflow提供的。以下是分析结果的一个快照: 我的问题:数据后面的两个百分比是什么意思?第一个数字是在函数中使用的总内存/时间的百分比,而第二个数字是在内部函数中未分配/花费的内存/时间的百分比。通常称为inclusive(包括函数中的函数)和exclusive(不包括函数中的函数)profiling 我将为计时解释这一点,但它对内存分析的作用是相同的 这是因为分析器只测量每个函数调用所需的时间。例如,如果您有: def func1(): # something

我使用的是tensorflow提供的。以下是分析结果的一个快照:


我的问题:数据后面的两个百分比是什么意思?

第一个数字是在函数中使用的总内存/时间的百分比,而第二个数字是在内部函数中未分配/花费的内存/时间的百分比。通常称为inclusive(包括函数中的函数)和exclusive(不包括函数中的函数)profiling


我将为计时解释这一点,但它对内存分析的作用是相同的

这是因为分析器只测量每个函数调用所需的时间。例如,如果您有:

def func1():
    # something
    func2()
    # something

def func2():
    # something
def func1():
    # something
    func2()
    # something
    func3()
    # something

def func2():
    # something

def func3():
    # something
我们假设
func1()
调用的探查器测量1000ms在
func1
中花费,而
750ms
func2
中花费,那么数字是:

func1    100%    25%
func2     75%    
因为100%的时间花在
func1
上,但只有25%(1000ms-750ms)/1000ms)的时间花在
func1
上,而没有花在
func2
上。同样,在
func2
中总共花费了75%(750ms/1000ms)。在本例中,
func2
的第二个数字也将是75%,因为我没有在其中包含任何代码,但如果其中包含其他函数,则将应用相同的数学。所以为了不混淆,我没有把它包括在这里

为使其更有趣并包含另一个示例,假设您有:

def func1():
    # something
    func2()
    # something

def func2():
    # something
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)