Получить сроки в GHCi

У меня относительно медленная процедура (метко названная медленная), и я хотел бы сделать что-то вроде

time $ slow [1,2,3,4,5]

в консоли (REPL), чтобы получить время, вместо того, чтобы компилировать программу и затем запускать время.

Можно ли это сделать?

1 ответ

Решение

Если вы введете :set +s в GHCi информация о времени и памяти будет напечатана после оценки каждого выражения.

Пример:

Prelude> :set +s
Prelude> sum [1..2^20]
549756338176
it :: (Num a, Enum a) => a
(0.34 secs, 169,197,008 bytes)

Обратите внимание, что это будет время выражения, вычисляемое в интерпретаторе, без оптимизации, поэтому оно не обязательно будет точным показателем того, как много времени займет, или даже какая из двух версий одного и того же кода будет быстрее, в фактический скомпилированный код. Для этого взгляните на библиотеку критериев бенчмаркинга.

Другие вопросы по тегам