我有一个相对较慢的程序(恰当地命名为slow),我想做类似
的事情time $ slow [1,2,3,4,5]
在控制台(REPL)中获取时间,而不必编译程序然后运行时间。
可以这样做吗?
答案 0 :(得分:39)
如果在GHCi中输入:set +s
,则在评估每个表达式后将打印时间和内存信息。
示例:
Prelude> :set +s
Prelude> sum [1..2^20]
549756338176
it :: (Num a, Enum a) => a
(0.34 secs, 169,197,008 bytes)
请注意,这将是在解释器中评估的表达式的时间,没有优化,因此它不一定是对事物花费时间的准确度量,或者甚至是相同代码的两个版本中的哪个版本将是在实际编译的代码中更快。为此,请查看criterion基准测试库。