Есть ли эквивалент в примитиве "выполнения" Лиспа в Scheme? - PullRequest
23 голосов
/ 03 февраля 2010

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

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

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

Ответы [ 2 ]

22 голосов
/ 04 февраля 2010

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

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

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

4 голосов
/ 17 июля 2016

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

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

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