有没有一种简单的方法来计算elisp中的函数调用?

时间:2014-01-21 00:07:55

标签: elisp

是的,我知道emacs探查器功能。我正在寻找类似于bash中time关键字的内容,例如:

(time (myfunc)) 

将返回或打印myfunc来电所用的时间。有这样的事吗?

2 个答案:

答案 0 :(得分:6)

benchmark.el提供benchmark-runbenchmark-run-compiled函数以及benchmark版本以交互方式运行。链接的例子:

C-u 512 M-x benchmark (sort (number-sequence 1 512) '<)
Elapsed time: 0.260000s (0.046000s in 6 GCs)

所有这些函数使用的计时器是benchmark-elapse宏,如果需要,您也可以直接使用它:

ELISP> (require 'benchmark)
ELISP> (benchmark-elapse
         (sit-for 2))
2.00707889

答案 1 :(得分:2)

我在http://nullprogram.com/blog/2009/05/28/

找到了我想要的内容

(defmacro measure-time (&rest body) "Measure and return the running time of the code block." (declare (indent defun)) (let ((start (make-symbol "start"))) `(let ((,start (float-time))) ,@body (- (float-time) ,start))))