我想像这样将变量设置为计算时间
(setf a (time (+ 1 1)))
但我得到的不是时间
Break 1 [7]> a
2
如何设置计算时间?
使用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 。
如果您经常这样做,您可能想要创建一个函数或宏。
见拉尔斯的回答。
TIME
将实现相关信息写入跟踪输出。如果您希望其输出为字符串:
(with-output-to-string (*trace-output*)
(time (+ 1 1)))