【问题标题】:Is there an way to really test the performance of a Haskell code? [duplicate]有没有办法真正测试 Haskell 代码的性能? [复制]
【发布时间】:2019-03-31 14:26:08
【问题描述】:

我想比较两个不同的函数,看看谁的性能更高。也许有一个工具或 ghci 命令?

【问题讨论】:

标签: haskell


【解决方案1】:

在 GHCi 中运行 :set +s。然后,您将在每次评估后获得时间和内存分配,如下所示:

GHCi, version 8.6.3: http://www.haskell.org/ghc/  :? for help
Prelude> :set +s
Prelude> product (replicate 10000000 1)
1
(1.78 secs, 1,292,363,104 bytes)
Prelude>

【讨论】:

  • 但是请注意,GHCi 禁用了很多优化。对于严格的基准测试,确实需要使用-O 编译并运行可执行文件。对于print (product (replicate 10000000 (1 :: Int))),我在 GHCi 中得到 2.44s,编译后得到 0.13s。
  • @chi ...和-O2 -fllvm它变成0.00s!
  • 我强烈反对任何人在使用 GHCi 时考虑性能。当您担心性能时,请务必编译代码,使用优化,并最好使用标准包等基准测试包。
  • 相对于 GHCi,某些类型的事情会明显变慢/变快吗? (例如,使用 ffi 快 5 倍,包含许多新类型的代码快 10 倍,其他一切快 20 倍)@Thomas
猜你喜欢
  • 2014-02-04
  • 1970-01-01
  • 1970-01-01
  • 2011-05-13
  • 2021-02-05
  • 1970-01-01
  • 2017-10-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多