SICP, Scheme, DrRacket Вопрос: Функция таймера / профилировщика?

В настоящее время я пытаюсь выполнить упражнение 1.22, для которого нужна функция runtime, которая возвращает количество миллисекунд, в течение которых работает система. Однако в моей среде (R5RS) этого, похоже, нет. У него также нет времени, текущих миллисекунд, текущих неточных миллисекунд и т. Д.

К какой функции у меня есть доступ, чтобы профилировать мою функцию? Какие функции возвращают количество прошедших миллисекунд, микросекунд и т. Д.? Я, конечно, предпочел бы самый высокоточный из имеющихся таймеров.


person KnowsLittle    schedule 27.09.2010    source источник


Ответы (2)


Вероятно, лучше всего переключить язык в DrRacket на «Использовать язык, объявленный в исходном коде» и начать свой файл с #lang racket. Тогда будут доступны такие функции, как current-seconds и друзья.

В качестве альтернативы вы можете использовать библиотеку профилирования, доступную через (require profile) и задокументированную здесь.

Наконец, вы можете взглянуть на библиотеку SICP для DrRacket Нила Ван Дайка.

person Sam Tobin-Hochstadt    schedule 12.10.2010

Я использовал current-excact-milliseconds, когда я проделал это упражнение. Предупреждение о спойлере: Вы можете увидеть мое решение в моем блоге по адресу SICP Exercise 1.22: Timed Prime Test.

Кстати, я решил эту проблему только после того, как задал аналогичный вопрос, Есть ли в Scheme эквивалент" исполняемого "примитива Lisp?

person Bill the Lizard    schedule 27.09.2010
comment
Как я уже говорил в своем сообщении, current-excact-milliseconds НЕ работает. Я получаю следующую ошибку: ссылка на неопределенный идентификатор: текущие-неточные-миллисекунды. Какую среду вы используете? - person KnowsLittle; 27.09.2010
comment
@KnowsLittle: я запускаю DrScheme с выбранным языковым модулем для выполнения упражнений SICP. Извините, я думал, что упомянул об этом в связанной статье. Мне нужно это обновить. - person Bill the Lizard; 27.09.2010