如何读取 sbcl 确定性分析器输出?
How to read sbcl deterministic profiler output?
如何解释 deterministic profiler of sbcl 的输出?
seconds | gc | consed | calls | sec/call | name
-------------------------------------------------------
seconds
(总执行时间),calls
(总调用量),sec/call
(每次调用的平均时间),name
(以及功能)非常简单。 consed
和gc
是什么意思?
我猜 consed
告诉分配的内存(虽然在什么单位?)我会说 gc
告诉 gc 回收的单位数量,但这两个值永远不匹配并且甚至使用不同的表示方案(gc
每 3 个数字有一个 .
并且有一个 ,
.
例如这个示例输出会告诉我什么(如果我的猜测是正确的,我会发生大量内存泄漏):
seconds | gc | consed | calls | sec/call | name
-------------------------------------------------------
0.011 | 0.000 | 965,488 | 6 | 0.001817 | PACKAGE:NAME
-------------------------------------------------------
0.011 | 0.000 | 965,488 | 6 | | Total
如果您熟悉 SBCL(缩写)下 (free …)
的输出,这些列将更容易解释:
Evaluation took:
0.771 seconds of real time
[ Run times consist of 0.061 seconds GC time, and 0.639 seconds non-GC time. ]
166,575,680 bytes consed
在您的示例中,package:name
位于调用堆栈顶部(仅在分析函数中)达 0.011 秒,GC 没有影响它,因为它在这段时间内从未发生过或太快了,并且分配了 965488 字节的 SBCL 管理内存。
每次 GC 后已使用和未使用的内存量无法按函数细分,因为未跟踪此信息。您可以通过评估前后的 (sb-ext:gc :full t) (room)
来衡量总体内存消耗,但请注意,报告的数量略有波动,并且不包括外部代码(C 库,如果您的应用程序使用它们)分配的内存,最后REPL 中的三个结果和表达式是 retained.
如何解释 deterministic profiler of sbcl 的输出?
seconds | gc | consed | calls | sec/call | name
-------------------------------------------------------
seconds
(总执行时间),calls
(总调用量),sec/call
(每次调用的平均时间),name
(以及功能)非常简单。 consed
和gc
是什么意思?
我猜 consed
告诉分配的内存(虽然在什么单位?)我会说 gc
告诉 gc 回收的单位数量,但这两个值永远不匹配并且甚至使用不同的表示方案(gc
每 3 个数字有一个 .
并且有一个 ,
.
例如这个示例输出会告诉我什么(如果我的猜测是正确的,我会发生大量内存泄漏):
seconds | gc | consed | calls | sec/call | name
-------------------------------------------------------
0.011 | 0.000 | 965,488 | 6 | 0.001817 | PACKAGE:NAME
-------------------------------------------------------
0.011 | 0.000 | 965,488 | 6 | | Total
如果您熟悉 SBCL(缩写)下 (free …)
的输出,这些列将更容易解释:
Evaluation took:
0.771 seconds of real time
[ Run times consist of 0.061 seconds GC time, and 0.639 seconds non-GC time. ]
166,575,680 bytes consed
在您的示例中,package:name
位于调用堆栈顶部(仅在分析函数中)达 0.011 秒,GC 没有影响它,因为它在这段时间内从未发生过或太快了,并且分配了 965488 字节的 SBCL 管理内存。
每次 GC 后已使用和未使用的内存量无法按函数细分,因为未跟踪此信息。您可以通过评估前后的 (sb-ext:gc :full t) (room)
来衡量总体内存消耗,但请注意,报告的数量略有波动,并且不包括外部代码(C 库,如果您的应用程序使用它们)分配的内存,最后REPL 中的三个结果和表达式是 retained.