31

我有一个相对较慢的过程(恰当地命名为慢),我想做类似的事情

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

在控制台(REPL)中获取时间,而不必编译程序然后运行时间。

这可以做到吗?

4

1 回答 1

50

如果您输入:set +sGHCi,则在计算每个表达式后将打印时间和内存信息。

例子:

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

请注意,这将是在解释器中评估的表达式的时间,没有优化,因此它不一定是对事情需要多长时间的准确衡量,或者甚至是相同代码的两个版本中的哪个版本会更快,在实际编译的代码。为此,请查看标准基准测试库。

于 2012-04-26T22:23:30.603 回答