【问题标题】:Reading the output of profvis in R在 R 中读取 profvis 的输出
【发布时间】:2018-05-15 04:02:23
【问题描述】:

我正在努力学习使用 profvis。这是一个带有可重现示例的链接:

profvis example

我不明白为什么内存有两个数字,即。本页第一个示例中的 -3.5 和 9.5(其中 Time = 1290)。

有人能解释一下如何解释 Memory 的 2 个数字吗?

【问题讨论】:

    标签: r profiling flamegraph


    【解决方案1】:

    正数是分配内存,负数是释放内存(在前一个样本和当前样本之间)。

    来自docs

    内存:为 a 分配或解除分配的内存(对于负数) 给定的调用堆栈。这以兆字节表示并汇总 给定行中代码的所有调用堆栈

    还要注意

    解释这些信息可能有点棘手,因为它确实 不一定反映在该行分配和释放的内存 的代码。采样分析器记录有关内存的信息 在前一个样本和当前样本之间发生的分配 一。这意味着该行上的分配/解除分配值 可能实际发生在前一行代码中。

    【讨论】:

    • 那么内存中行左边的数字总是负数(对应于释放),而行右边的数字总是正数(对应于分配)?假设我需要计算程序在任何时间点使用的最大可能内存以确定程序的硬件 (RAM) 要求。代码使用的内存上限将在每一行中为 = max ( 正负数 ),因为我们可能在释放之前进行了分配。那是对的吗?我不能精确计算程序使用的最大 RAM 量吗?
    • 我现在认为代码中任何一点使用的最大 RAM 量将 = max(a_i + b_i + a_j,这里 b_i 是负数,因为它是释放) 其中 a_i 是分配,b_i 是是释放,其中 i 和 j 是连续的(不一定在连续的行中)分配/释放。
    • 应该是这样,是的。
    • 是否有软件可以为手动工作有点困难的大文件进行这种计算?
    • 请参阅profmem 包。
    猜你喜欢
    • 1970-01-01
    • 2015-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-04
    • 2017-01-18
    相关资源
    最近更新 更多