如何配置IxSet?

时间:2013-01-23 05:18:42

标签: haskell profiling happstack

我正在使用IxSet继续开发我的程序,如果我做错了(或者可以优化),我很好奇。目前它消耗的内存比我认为的要多得多。

计划在这里:https://bitbucket.org/k_bx/duplicates 分析结果如下:https://gist.github.com/4602235

p.s:请,有人添加“ixset”标签,因为我无法创建一个。

更新:

使用-h:http://img-fotki.yandex.ru/get/6442/72443267.2/0_9d04d_4be1cd9f_orig

进行内存分析

更新2:

同一个-h文件的整洁内存分析视图:http://heap.ezyang.com/view/c1781ec5e53b00d30a9f8cd02f0b8a5e777674c9#form

1 个答案:

答案 0 :(得分:1)

您只是使用vanilla堆分析,它不一定捕获数据结构使用情况。正如您所指出的,它会通过代码中的函数来分解堆。有几个选项可以通过探查器来获得你想要的东西(来自ghc指南:http://www.haskell.org/ghc/docs/latest/html/users_guide/prof-heap.html#rts-options-heap-prof

  

-hc(可以缩短为-h)。通过产生数据的成本中心堆栈来分解图表。

     

-hm通过包含产生数据的代码的模块来分解实时堆。

     

-hd通过闭包描述细分图形。对于实际数据,描述只是构造函数名称,对于其他闭包,它是一个   编译器生成的字符串,用于标识闭包。

     

-hy按类型细分图表。对于具有函数类型或未知/多态类型的闭包,该字符串将表示一个   近似于实际类型。

     

-hr按固定器设置细分图形。

     

-hb通过传记分解图表。传记剖析在下面有更详细的描述

hm,hd和hr可能对您最有用。经过一些思考,您还可以使用hb获取有关严格属性的一些信息。