Make call-with-time-logging handle multiple return values

Signed-off-by: Christopher Baines <mail@cbaines.net>
This commit is contained in:
Danjela Lura 2020-08-07 18:52:30 +02:00 committed by Christopher Baines
parent 5b3e5d9441
commit bef826cf2e

View file

@ -16,18 +16,21 @@
;;; <http://www.gnu.org/licenses/>.
(define-module (guix-data-service utils)
#:use-module (srfi srfi-11)
#:export (call-with-time-logging
with-time-logging
prevent-inlining-for-tests))
(define (call-with-time-logging action thunk)
(simple-format #t "debug: Starting ~A\n" action)
(let* ((start-time (current-time))
(result (thunk))
(time-taken (- (current-time) start-time)))
(simple-format #t "debug: Finished ~A, took ~A seconds\n"
action time-taken)
result))
(let-values
((result
(thunk)))
(let* ((start-time (current-time))
(time-taken (- (current-time) start-time)))
(simple-format #t "debug: Finished ~A, took ~A seconds\n"
action time-taken)
(apply values result))))
(define-syntax-rule (with-time-logging action exp ...)
"Log under NAME the time taken to evaluate EXP."