Lisp 如何使用SBCL';s SB-SPR的分配分析?
更新:升级到SBCL 1.0.24修复了我的问题。(虽然我还需要将SLIME升级到11-23-2008版本。稳定的2006-04-20版本以及CVS主管似乎与SBCL 1.0.24不兼容。) SBCL统计探查器的表示,除了CPU使用之外,还可以探查内存分配。然而,在我的一生中,除了一个简单的Lisp表单之外,我还无法让它进行更多的评测。下面是一个发生了什么的例子:Lisp 如何使用SBCL';s SB-SPR的分配分析?,lisp,common-lisp,slime,sbcl,Lisp,Common Lisp,Slime,Sbcl,更新:升级到SBCL 1.0.24修复了我的问题。(虽然我还需要将SLIME升级到11-23-2008版本。稳定的2006-04-20版本以及CVS主管似乎与SBCL 1.0.24不兼容。) SBCL统计探查器的表示,除了CPU使用之外,还可以探查内存分配。然而,在我的一生中,除了一个简单的Lisp表单之外,我还无法让它进行更多的评测。下面是一个发生了什么的例子: CL-USER> (require :sb-sprof) ("SB-SPROF") CL-USER> (defun !
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
此时,它通常挂起
有人在这方面取得了成功吗?对我来说很有效(即不挂起),但您的示例消耗很少,运行需要1ms,因此您可能希望获取更多样本并通过:循环T。挂起听起来不太好,所以您至少应该指定您使用的版本和平台。在sbcl-devel邮件列表中报告这一点也可能是个好主意。这会使Swank线程也挂起吗?我正在OS X 10.5.6.jrockway上运行sbcl x86 1.0.17,是的,我甚至无法中断它。一般来说,我必须终止sbcl过程。然而,升级到1.0.24已经解决了一些问题。谢谢大家的帮助!