是的,我知道emacs探查器功能。我正在寻找类似于bash中time
关键字的内容,例如:
(time (myfunc))
将返回或打印myfunc
来电所用的时间。有这样的事吗?
答案 0 :(得分:6)
benchmark.el提供benchmark-run
和benchmark-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))))