2

如何使用 DrScheme 分析我的函数?

(require profile) 
(define (factorial n)
  (cond
    ((= n 1) 1)
    (else (* n (factorial (- n 1))))))

(profile factorial)

上面的代码返回

Profiling results
-----------------
  Total cpu time observed: 0ms (out of 0ms)
  Number of samples taken: 0 (once every 0ms)

====================================
                        Caller
Idx  Total    Self    Name+srcLocal%
     ms(pct)  ms(pct)   Callee
====================================
> 

我试过:-(profile(factorial 100))
-(profile factorial)(factorial 100)
但它给了我相同的结果。我究竟做错了什么?

4

2 回答 2

1

您是否尝试过提高 N in (profile (factorial N)) 直到出现明显的停顿?

(factorial 100) 是现代计算机应该能够在 <1ms 内完成的事情。

只是浏览文档让我怀疑这只是阶乘太快而无法轻松分析该案例的问题。

于 2009-07-01T03:22:21.530 回答
1

我不熟悉profilePLT Scheme 中的模块,但也许您必须实际调用该函数?

(profile (factorial 1000))
于 2009-07-01T02:54:40.727 回答