Я хочу, чтобы установить переменный в вычислительное время как этотЗначение переменной Setf для вычисления времени?
(setf a (time (+ 1 1)))
но вместо времени я получаю это
Break 1 [7]> a
2
Как может установить для вычисления времени?
Я хочу, чтобы установить переменный в вычислительное время как этотЗначение переменной Setf для вычисления времени?
(setf a (time (+ 1 1)))
но вместо времени я получаю это
Break 1 [7]> a
2
Как может установить для вычисления времени?
См. Ответ Ларса.
TIME
записывает информацию, зависящую от реализации, к выходу трассировки. Если вы хотите его вывод в виде строки:
(with-output-to-string (*trace-output*)
(time (+ 1 1)))
Использование 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, если вы хотите результат в секундах.
Возможно, вы захотите сделать функцию или макрос, если вы сделаете это много.
Возможно, было бы полезно убедиться, что компилятор не удалил вычисление, поскольку он не создает побочных эффектов, может быть вычислен во время компиляции и/или результат не используется. –
в вашем вопросе последней строки 'Как я устанавливаю для вычисления времени' не является правильным, пожалуйста, сделать правильный – Jageen
Это позволяет предположить, что 'a' нет? определены. Вы это определили? –
Определяется, но неверно. – boucekv