Я хочу узнать, сколько времени требуется для выполнения функции. Какой самый простой способ сделать это в PLT-Scheme? В идеале я бы хотел сделать что-то вроде этого:
> (define (loopy times)
(if (zero? times)
0
(loopy (sub1 times))))
> (loopy 5000000)
0 ;(after about a second)
> (timed (loopy 5000000))
Took: 0.93 seconds
0
>
Не имеет значения, придется ли мне использовать какой-то другой синтаксис, например (timed loopy 5000000) или (timed '(loopy 5000000)), или он возвращает время, затраченное на минусы, или что-то в этом роде.

Нашел ...
(time-apply proc arg-list)invokes the procedure proc with the arguments in arg-list. Four values are returned: a list containing the result(s) of applying proc, the number of milliseconds of CPU time required to obtain this result, the number of ``real'' milliseconds required for the result, and the number of milliseconds of CPU time (included in the first result) spent on garbage collection.
Пример использования:
> (time-apply loopy '(5000000))
(0)
621
887
0
Стандартное имя для определения времени выполнения выражений в большинстве реализаций Scheme - «время». Вот пример из DrRacket.
(define (loopy times) (if (zero? times) 0 (loopy (sub1 times))))
(time (loopy 5000000)) cpu time: 1526 real time: 1657 gc time: 0 0
Если вы используете время для сравнения различных реализаций друг с другом, не забудьте использовать racket из командной строки, а не напрямую проводить сравнительный анализ в DrRacket (DrRacket вставляет код отладки, чтобы лучше отображать сообщения об ошибках).
Из-за смены имени DrScheme заменен на DrRacket.