【发布时间】:2018-05-15 10:22:13
【问题描述】:
我使用的是 tensorflow 提供的the profiler tool。这是分析结果的快照:
我的问题:数据后面的两个百分比数字是什么意思?
【问题讨论】:
标签: tensorflow profiling
我使用的是 tensorflow 提供的the profiler tool。这是分析结果的快照:
我的问题:数据后面的两个百分比数字是什么意思?
【问题讨论】:
标签: tensorflow profiling
第一个数字是在函数中使用的总内存/花费的时间的百分比,而第二个是在未分配/花费的函数中使用的内存/花费的时间的百分比在内部函数中。通常这些被称为包含(包括函数中的函数)和排他(不包括函数中的函数)分析。
我会在时间上解释这一点,但它对内存分析的工作原理是一样的。
这是因为分析器只是测量每个函数调用需要多长时间。例如,如果您有:
def func1():
# something
func2()
# something
def func2():
# something
让我们假设 func1() 调用的分析器测量 1000 毫秒在 func1 中花费,750ms 在 func2 中花费,那么数字将是:
func1 100% 25%
func2 75%
因为 100% 的时间花在 func1 - 但只有 25% ((1000ms-750ms)/1000ms) 的时间花在 func1 上 没有在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)
【讨论】: