2013-10-01 53 views
0

我想變量設置爲計算時間這樣Setf變量計算時間?

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

但不是時候,我得到這個

Break 1 [7]> a 
2 

如何設置一個,以計算時間?

+0

定義。你有沒有定義它? – Jageen

+0

這似乎表明了''不 – 2013-10-01 09:10:47

+0

它被定義但錯誤的值。 – boucekv

回答

5

查看Lars的回答。

TIME將實現相關信息寫入跟蹤輸出。如果你想它作爲一個字符串輸出:

(with-output-to-string (*trace-output*) 
    (time (+ 1 1))) 
在你的問題中的最後一行'我怎樣才能設置一個以計算時間'是不妥當的,請要對它進行適當
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如果你想要的結果在幾秒鐘。

如果你這麼做了,你可能會想做一個函數或宏。

+3

確保編譯器沒有移除計算可能是有用的,因爲它不會產生副作用,可以在編譯時計算和/或不使用結果。 –