是的,我知道emacs分析器功能。我正在尋找像在bash類似time
關鍵字的東西,東西:有沒有簡單的方法來在elisp中調用函數?
(time (myfunc))
這將返回或打印由myfunc
調用所花費的時間。有這樣的事嗎?
是的,我知道emacs分析器功能。我正在尋找像在bash類似time
關鍵字的東西,東西:有沒有簡單的方法來在elisp中調用函數?
(time (myfunc))
這將返回或打印由myfunc
調用所花費的時間。有這樣的事嗎?
快速搜索顯示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
我發現正是我一直在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))))
你能解釋爲什麼這比'benchmark-run'更好嗎? – phils
重量更輕。我正在尋找一些超級簡單的東西。 – killdash9
然後你可以使用'benchmark-elapse'。我已經將它添加到Jon的答案中。 – phils