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

kil*_*sh9 7 elisp

是的,我知道emacs探查器功能.我正在寻找与timebash中的关键字类似的东西,例如:

(time (myfunc)) 
Run Code Online (Sandbox Code Playgroud)

这将返回或打印myfunc通话所用的时间.有这样的事吗?

Jon*_*rdy 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
Run Code Online (Sandbox Code Playgroud)