【问题标题】:Get evaluation timings in GHCi在 GHCi 中获取评估时间
【发布时间】:2012-05-07 16:55:15
【问题描述】:

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

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

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

这个可以吗?

【问题讨论】:

  • 在 ghci 中? :set +s 为您提供所有评估表达式的计时和分配统计信息。如果需要,您可以使用System.CPUTime.getCPUTime 自己编写time
  • 请注意,交互式程序不会为您提供有关编译性能的准确信息。
  • 您可能会喜欢time runhaskell foo.hs 和更诚实的人ghc foo.hs -O2 && time ./foo

标签: haskell ghc timing ghci


【解决方案1】:

如果你在 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 基准测试库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-06
    • 1970-01-01
    • 1970-01-01
    • 2011-12-11
    • 1970-01-01
    • 2016-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多