Setf变量到计算时间?

时间:2013-10-01 09:00:53

标签: common-lisp

我想将变量设置为像这样的计算时间

(setf a (time (+ 1 1)))

但不是时间我得到这个

Break 1 [7]> a
2

如何设置计算时间?

2 个答案:

答案 0 :(得分:6)

使用GET-INTERNAL-RUN-TIME(或GET-INTERNAL-REAL-TIME):

(setf a
      (let ((start (get-internal-run-time)))
        (+ 1 1) ;This is the computation you want to time.
        (- (get-internal-run-time) start)))

如果您想在几秒钟内得到结果,请除以INTERNAL-TIME-UNITS-PER-SECOND

如果你这么做的话,你可能想制作一个函数或宏。

答案 1 :(得分:5)

见Lars的答案。

TIME将实现相关信息写入跟踪输出。如果您希望其输出为字符串:

(with-output-to-string (*trace-output*)
  (time (+ 1 1)))