0

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

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

但我得到的不是时间

Break 1 [7]> a
2

如何设置计算时间?

4

2 回答 2

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 。

如果您经常这样做,您可能想要创建一个函数或宏。

于 2013-10-01T09:15:20.140 回答
5

见拉尔斯的回答。

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

(with-output-to-string (*trace-output*)
  (time (+ 1 1)))
于 2013-10-01T09:20:43.347 回答