[plt-scheme] Question on profiling
Hi,
I was just profiling my code in DrScheme because of some performance
problems. I read the documentation about "Using errortrace" but still
have a problem.
I have a simple function like:
(define (slow-func x y)
(let* ((a (foo1 x))
(b (foo2 y)))
(foo3 a b)))
With some function definitions:
(define (foo1 x) ... )
(define (foo2 y) ... )
(define (foo3 a b) ... )
Now the output of the profile is (about):
slow-func - 6000ms - 1 call
foo1 - 0ms - 1 call
foo2 - 0ms - 1 call
foo3 - 0ms - 1 call
Now, I wonder how I should interpret these results? How can "slow-func"
run so slow when the rest runs so fast? I was assuming "foo1" in my
program to be the bottleneck, but the profile results showed something
else. Is this behavior a result of the let*-expression and would it be
of help, if I define "a" and "b" in some separate functions or writing
"(foo3 (foo1 x) (foo2 y))" instead?
Thanks in advance,
- Stefan