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