Подтвердить что ты не робот

Получить оценки времени в GHCi

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

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

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

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

4b9b3361

Ответ 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)

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