Exactly as per the example you've quoted. You literally wrap (measure-time ... )
around the thing you're timing. The entirety of the catch
expression, in your case.
Did you not try that?
質問
I'm looking for some assistance, please, to measure the time of a function call when using a while
loop -- i.e., the clock should stop when the function throws done. I found the following timer on the mailing list: http://lists.gnu.org/archive/html/help-gnu-emacs/2008-06/msg00087.html
(defmacro measure-time (&rest body)
"Measure the time it takes to evaluate BODY."
`(let ((time (current-time)))
,@body
(message "%.06f" (float-time (time-since time)))))
It's used like this:
(measure-time
(dotimes (i 100000)
(1+ 1)))
An example of how to use the timer macro with a while
loop would be greatly appreciated. I'm looking for the total time beginning from before the while
loop commenced to the end when done
is thrown.
(defun test ()
(measure-time)
(catch 'done
(while t
[*** do a bunch of stuff]
(when (condition-satisfied-p)
[*** STOP THE CLOCK AND PRINT TOTAL DURATION ***]
(throw 'done nil) ))))
解決
Exactly as per the example you've quoted. You literally wrap (measure-time ... )
around the thing you're timing. The entirety of the catch
expression, in your case.
Did you not try that?
他のヒント
BTW, this macro is called benchmark-elapse
in Emacs, but it is not autoloaded, so you need to (require 'benchmark)
before using it.