Получить сроки в 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)
Обратите внимание, что это будет время выражения, вычисляемое в интерпретаторе, без оптимизации, поэтому оно не обязательно будет точным показателем того, как много времени займет, или даже какая из двух версий одного и того же кода будет быстрее, в фактический скомпилированный код. Для этого взгляните на библиотеку критериев бенчмаркинга.