[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: is there a emacs lisp timing command?
From: |
thierry . volpiatto |
Subject: |
Re: is there a emacs lisp timing command? |
Date: |
Tue, 24 Mar 2009 07:46:19 +0100 |
User-agent: |
Gnus/5.110011 (No Gnus v0.11) Emacs/23.0.91 (gnu/linux) |
hoops! i didn't remember i had this one also:
(defmacro chrono-func (output fn &rest args)
`(let ((init-time (cadr (current-time)))
(final-time)
(final-result))
(setq final-result (funcall ,fn ,@args))
(setq final-time (- (cadr (current-time)) init-time))
(message "Time:%2s s" final-time)
(when ,output
final-result)))
May be it's exactly what you want.
thierry.volpiatto@gmail.com writes:
> And this can help also:(adapt for your case with traverselisp code).
>
>
> (defun current-human-time ()
> (let* ((cur-time (decode-time (current-time)))
> (h (int-to-string (nth 2 cur-time)))
> (m (int-to-string (nth 1 cur-time)))
> (s (int-to-string (nth 0 cur-time))))
> (message "%s" (concat h ":" m ":" s))))
>
> (defvar my-time nil)
> (defun start-watch ()
> (setq my-time (run-with-timer 1 1 'current-human-time)))
>
> (defun stop-watch ()
> (cancel-timer my-time)
> (setq my-time nil))
>
> thierry.volpiatto@gmail.com writes:
>
>> Hi,
>> have a look at traverselisp.el,
>> the function `traverse-deep-rfind' have a timer.
>> http://www.emacswiki.org/cgi-bin/emacs/traverselisp.el
>>
>> Xah Lee <xahlee@gmail.com> writes:
>>
>>> is there a elisp command like timing, that returns the time a function
>>> took?
>>>
>>> while testing some performance issues, i tried to write one.
>>>
>>> (defun xx-timing ()
>>> "returns the timing."
>>> (interactive)
>>> (let (starttime endtime)
>>> (setq starttime (current-time))
>>>
>>> ;; some function here
>>> (sleep-for 0 5)
>>>
>>> (setq endtime (current-time))
>>> (message "%f" (+ (* (- (elt endtime 0)
>>> (elt starttime 0)) 65536)
>>> (- (elt endtime 1)
>>> (elt starttime 1))
>>> (* (- (elt endtime 2)
>>> (elt starttime 2)) 0.001)))
>>> ))
>>>
>>> but after about 20 minutes on this, i gave up. It seems to me, when
>>> microseconds is involved (returned by current-time), the result is
>>> weired. I don't see any logical problem in my code, but the above code
>>> is obvious wrong, often returning results some 70 seconds extra
>>> whenever microseconds is involved.
>>>
>>> anyone has written a timing command somewhere?
>>>
>>> This is on:
>>> GNU Emacs 22.2.1 (powerpc-apple-darwin8.11.0, Carbon Version 1.6.0) of
>>> 2008-04-05 on g5.tokyo.stp.isas.jaxa.jp
>>>
>>> PowerPC G5, osx 10.4.11.
>>>
>>> Xah
>>> ∑ http://xahlee.org/
>>>
>>> ☄
>>>
>>>
--
A + Thierry Volpiatto
Location: Saint-Cyr-Sur-Mer - France