Подтвердить что ты не робот

Существует ли эквивалент примитива Lisp "runtime" в схеме?

Согласно SICP раздел 1.2.6, упражнение 1.22:

В большинстве реализаций Lisp имеется примитив, называемый runtime, который возвращает целое число, определяющее количество времени, в течение которого система была запущена (измеренная, например, в микросекундах).

Я использую DrScheme, где время исполнения кажется недоступным, поэтому я ищу хорошую замену. Я нашел в ссылке PLT-Scheme Reference, что есть примитив current-milliseconds. Кто-нибудь знает, есть ли таймер на Схеме с лучшим разрешением?

4b9b3361

Ответ 1

current-milliseconds - это функция, которая возвращает текущий миллисекундный счет из системы, но может уменьшиться. current-inexact-milliseconds аналогичен, но возвращает число с плавающей запятой с гарантированным увеличением.

Есть также множество подобных функций, которые вы можете найти на этой странице, но если вам нужно только время, чтобы использовать определенную функцию, просто используйте (time expr), и он распечатает время, необходимое для оценки выражения.

Еще одна важная вещь - это профайлер, если вам понадобится более подробный анализ вашего кода.

Ответ 2

Я тоже столкнулся с этой проблемой сегодня. Я использую DrRacket, поскольку он, кажется, заменил DrScheme. Хотя это старая нить, я добавляю свои результаты для любого нового, кто спотыкается по этой теме.

С R5RS в качестве выбранного языка добавьте следующие две строки перед программой, чтобы заставить ее работать

(#%require (only racket/base current-milliseconds))
(define (runtime) (current-milliseconds))