The Emacs profiler cannot be used to effectively profile, because the reports do not flatten the recursion. Take for example, this recipie: ;; Naive Fibonacci has terrible time complexity. (defun fib (n) (if (< n 3) 1 (+ (fib (- n 1)) (fib (- n 2))))) (profiler-start 'cpu) (fib 30) (profiler-report) (profiler-stop) Here, The profiler report assigns (nearly) all of the time to (+ ...), including time from deeper invocations of fib (and their invocations of (+ ...), which makes the profiling report less-than-optimal. Thanks, PythonNut