Если вам нужно просто захватить строку программным способом, вы можете * привязать * к чему-то другому, прежде чем использовать время .
user=> (def x (with-out-str (time (+ 2 2))))
#'user/x
user=> x
"\"Elapsed time: 0.119 msecs\"\n"
Если вам нужен больший контроль над форматом, вы можете создать свою собственную версию time , используя методы системного времени Java, которые в любом случае использует макрос time . :
user => (macroexpand '(time (+ 2 2)))
(let* [start__4197__auto__ (. java.lang.System (clojure.core/nanoTime))
ret__4198__auto__ (+ 2 2)]
(clojure.core/prn (clojure.core/str "Elapsed time: " (clojure.core//
(clojure.core/double
(clojure.core/- (. java.lang.System (clojure.core/nanoTime))
start__4197__auto__)) 1000000.0) " msecs"))
ret__4198__auto__)
Возьмите эту базовую структуру и замените вызов prn на любой механизм отчетности, который вы предпочитаете.