【问题标题】:How does one use SBCL's SB-SPROF allocation profiling?如何使用 SBCL 的 SB-SPROF 分配分析?
【发布时间】:2010-09-30 21:36:27
【问题描述】:

更新:升级到 SBCL 1.0.24 解决了我的问题。 (虽然我还需要将 SLIME 升级到 11-23-2008 修订版。稳定的 2006-04-20 修订版以及 CVS 的负责人似乎不适用于 SBCL 1.0.24。)

SBCL 统计分析器的documentation 表示除了 CPU 使用率之外,您还可以分析内存分配。然而,在我的一生中,我无法让它比一个微不足道的 Lisp 形式更多地描述。下面是一个例子:

CL-USER> (require :sb-sprof)
("SB-SPROF")
CL-USER> (defun ! (n)
           (if (= n 1)
               1
               (* n (! (- n 1)))))
!
CL-USER> (sb-sprof:with-profiling (:mode :alloc :loop nil :show-progress t :max-samples 100 :report :flat)
           (dotimes (n 100)
             (print n)
             (! 10)))
===> 0 of 100 samples taken.

0 
1 
2 
3 
4 
Profiler sample vector full (12 traces / 1000 samples), doubling the size
Profiler sample vector full (17 traces / 2000 samples), doubling the size
Profiler sample vector full (25 traces / 4000 samples), doubling the size
Profiler sample vector full (36 traces / 8000 samples), doubling the size
Profiler sample vector full (52 traces / 16000 samples), doubling the size
Profiler sample vector full (74 traces / 32000 samples), doubling the size

此时,它通常会挂起。

有人成功了吗?

【问题讨论】:

  • 挂起听起来不太好,所以你至少应该指定你使用的版本和在什么平台上。在 sbcl-devel 邮件列表上报告它可能也是一个好主意。
  • Swank 线程是否也会挂起?
  • 我在 OS X 10.5.6 上运行 SBCL x86 1.0.17。
  • jrockway,是的,我什至无法打断它。一般来说,我不得不终止 sbcl 进程。但是,升级到 1.0.24 已经解决了问题。感谢大家的帮助!

标签: lisp common-lisp slime sbcl


【解决方案1】:

对我有用(即没有挂起),只是您的示例占用很少并且需要 1 毫秒才能运行,因此您可能想要获取更多样本并通过 :LOOP T 代替。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 2011-09-04
    相关资源
    最近更新 更多