我编写了一个perl程序来处理庞大的数据集。我试图在其内存使用方面描述其执行情况。尝试在小数据集上使用valgrind,但它会大大减慢执行速度。我正在寻找只是堆分析。 你们能提出一些建议吗?
答案 0 :(得分:7)
当我使用Google和搜索字词'perl memory profile'时,第一个items指向Perl模块Devel::Size
之一,作为发现内存使用情况的一种方式。还有潜伏的内存泄漏检测器模块。
答案 1 :(得分:5)
新的Devel::SizeMe模块提供了对perl程序或数据结构的堆内存使用情况的详细可见性。有一个blog post introducing Devel::SizeMe,包括与slides和screencast对话的链接。
答案 2 :(得分:1)
使用Memchmark。
答案 3 :(得分:1)
我们使用Devel::Leak
。要完全工作,您需要一个调试编译的Perl,但即使没有它,您也可以在各个关键点计算并记录代码运行时分配的标量,散列和数组的数量。这足以消除我们的泄漏。