Есть ли эквивалентное примитивному времени «время выполнения» Lisp?
Вопрос
Согласно с Раздел SiCP 1.2.6., Упражнение 1.22:
Большинство реализаций LISP включают примитивное значение Runtime, которое возвращает целое число, которое указывает количество времени, которое запускается система (измерена, например, в микросекунде).
я использую ДРСЧЕМЕ, где время выполнения, похоже, не доступен, поэтому я ищу хорошую замену. Я нашел в ссылке PLT-схемы, что есть Текущие миллисекунды примитивный. Кто-нибудь знает, если есть таймер в схеме с лучшим разрешением?
Решение
current-milliseconds
Это функция, которая возвращает текущее количество миллисекунд от системы, но может снизиться. current-inexact-milliseconds
Похоже, но возвращает гарантированный номер плавающей запятой.
Существует также куча подобных функций, которые вы можете найти на этой странице, но если все, что вам нужно, это время для определенной функции, то просто используйте (time
экспл) И он будет распечатан время, чтобы оценить выражение.
Еще одна вещь, которая актуальна здесь, это профилирование, В случае необходимости вам нужна более многословный анализ вашего кода.
Другие советы
Я тоже наканулся с этой проблемой сегодня. Я использую DRRANCET, так как кажется, что он заменяет дрессхема. Хотя это старая нить, я добавляю свои выводы для любого нового, который сталкивается через эту тему.
С R5RS в качестве выбранного языка добавьте следующие две строки перед программой, чтобы она работала
(#%require (only racket/base current-milliseconds))
(define (runtime) (current-milliseconds))