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) ))))
body
contains the symboltime
you'll have unexpected results. You can avoid such variable capture by usinggensym
. – Cowskin