【问题标题】:Explanation of the two percentage numbers in tensorflow's profiler?张量流分析器中两个百分比数字的解释?
【发布时间】:2018-05-15 10:22:13
【问题描述】:

我使用的是 tensorflow 提供的the profiler tool。这是分析结果的快照:

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

【问题讨论】:

    标签: tensorflow profiling


    【解决方案1】:

    第一个数字是在函数中使用的总内存/花费的时间的百分比,而第二个是在分配/花费的函数中使用的内存/花费的时间的百分比在内部函数中。通常这些被称为包含(包括函数中的函数)和排他(不包括函数中的函数)分析。


    我会在时间上解释这一点,但它对内存分析的工作原理是一样的。

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

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

    让我们假设 func1() 调用的分析器测量 1000 毫秒在 func1 中花费,750msfunc2 中花费,那么数字将是:

    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)
    

    【讨论】:

      猜你喜欢
      • 2012-11-17
      • 1970-01-01
      • 1970-01-01
      • 2018-10-20
      • 2012-03-08
      • 1970-01-01
      • 1970-01-01
      • 2014-06-26
      • 1970-01-01
      相关资源
      最近更新 更多