Common Lisp предоставляет макрос time
для определения того, сколько времени требуется для выполнения формы, и он выводит информацию в вывод трассировки:
время оценивает форму в текущей среде ( лексический и динамический). … time выводит различные данные о времени и другую информацию для вывода трассировки. Характер и формат печатной информации определяется реализацией. Реализациям рекомендуется предоставлять такую информацию, как прошедшее реальное время, время работы машины и статистику управления хранением.
Например:
(time (length (make-array 1000000)))
Real time: 0.0140014 sec.
Run time: 0.0 sec.
Space: 4000008 Bytes
GC: 1, GC time: 0.0 sec.
Есть ли способ собрать эти параметры и шаг за шагом поместить их в какой-нибудь стек или список и вернуть из функции?