在Haskell,我怎么能“简单”测量功能的性能。 例如,它需要多长时间来运行,也多少内存需要? 我知道纹的,但是,有没有不需要我过多的更改我的代码更简单的方法?
Answer 1:
测量需要多长时间来运行和多少内存占用是两个独立的问题,即:基准测试和分析。 Haskell有一个定义良好的一套方法为两种工具。 没有解决的问题,需要你做出实际的应用程序的代码进行任何更改。
标杆
这是库的使用完成。 目前在这一领域,这是在的意见,即建议在Niklas一个最终的胜利者标准 。 该库设计得非常好,是不是很难使用,并产生一个非常详细的数据 。
工作流程是这样的:你创建一个包含基准的建立一个独立的模块,编译它,并选择运行它。 为了得到一个参考可用的选项与运行--help
修改。
你可以找到的安装模块的例子在这里 。
剖析
有足够的好材料了,所以我就直接把它们:
- 在分析一般参考
- 在真实世界哈斯克尔一个教程
- 与惊天动地剖析教程
Answer 2:
有关职能如何进行个人相互比较非常粗糙的信息,您可以使用ghci中
Prelude> :set +s
Prelude> last [1..100000000]
100000000
(1.65 secs, 4000685276 bytes)
你需要知道,ghci的不编译代码,因此运行速度比GHC慢得多 ,时间和内存使用情况的数据是近似的,而且绝对没有优化已经完成。
这意味着,它可以让你只想着如何(在)高效的代码是一个非常粗略的想法,而且是无可替代的标杆正确和编译和优化代码分析,在详细尼基塔沃尔科夫的答案 。
文章来源: Haskell measuring function performance