首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Emacs . Emacs lisp中函数调用的定时执行

Emacs . Emacs lisp中函数调用的定时执行
EN

Stack Overflow用户
提问于 2014-05-13 03:24:50
回答 2查看 3.1K关注 0票数 12

我正在寻找一些帮助,请,来测量使用while循环时函数调用的时间--也就是说,当函数抛出时时钟应该停止。我在邮件列表中找到了以下定时器:http://lists.gnu.org/archive/html/help-gnu-emacs/2008-06/msg00087.html

代码语言:javascript
复制
(defmacro measure-time (&rest body)
  "Measure the time it takes to evaluate BODY."
  `(let ((time (current-time)))
     ,@body
     (message "%.06f" (float-time (time-since time)))))

它是这样用的:

代码语言:javascript
复制
(measure-time
  (dotimes (i 100000)
    (1+ 1)))

对于如何使用带有while循环的计时器宏的示例,我们将不胜感激。我正在寻找从while循环开始到抛出done时结束的总时间。

代码语言:javascript
复制
(defun test ()
  (measure-time)
  (catch 'done
    (while t
      [*** do a bunch of stuff]
      (when (condition-satisfied-p)
        [*** STOP THE CLOCK AND PRINT TOTAL DURATION ***]
        (throw 'done nil) ))))
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-13 04:48:24

和你引用的例子完全一样。你真的把(measure-time ... )围绕着你的时间安排。在您的例子中,整个catch表达式。

你没试过吗?

票数 6
EN

Stack Overflow用户

发布于 2021-05-23 15:39:46

顺便说一下,这个宏在Emacs中称为benchmark-elapse,但它不是自动加载的,所以在使用它之前需要(require 'benchmark)

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23622296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档