我有一个相对较慢的过程(恰当地命名为慢),我想做类似的事情
time $ slow [1,2,3,4,5]
在控制台(REPL)中获取时间,而不必编译程序然后运行时间。
这可以做到吗?
如果您输入: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)
请注意,这将是在解释器中评估的表达式的时间,没有优化,因此它不一定是对事情需要多长时间的准确衡量,或者甚至是相同代码的两个版本中的哪个版本会更快,在实际编译的代码。为此,请查看标准基准测试库。