分析 Perl 程序的堆内存使用情况
我编写了一个 perl 程序来操作巨大的数据集。我正在尝试根据内存使用情况来分析其执行情况。尝试在小数据集上使用 valgrind,但它会显着减慢执行速度。我正在寻找堆分析。 你们能建议一些方法吗?
I have written a perl program to operate on huge datasets. I am trying to profile its excution in terms of its memory usage. Tried using valgrind on small datasets, but it slows down the execution dramatically. I am looking for just heap profiling.
Could you guys suggest some ways ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
当我使用 Google 和搜索词“perl 内存配置文件”时,第一个项目点之一到 Perl 模块
Devel::Size
作为一种方式的发现内存使用情况。周围还潜伏着内存泄漏检测器模块。When I used Google and the search term 'perl memory profile', one of the first items points to the Perl module
Devel::Size
as one way of spotting memory usage. There are also memory leak detector modules lurking around.新的 Devel::SizeMe 模块提供了对堆内存使用情况的详细可见性Perl 程序或数据结构。有一篇博客文章介绍了 Devel::SizeMe< /a>,包括谈话链接 幻灯片 和 截屏。
The new Devel::SizeMe module provides detailed visibility into the heap memory usage of a perl program or data structure. There's a blog post introducing Devel::SizeMe, including links to talk slides and screencast.
使用 Memchmark。
use Memchmark.
我们使用了
Devel::Leak
。为了充分工作,您需要一个调试编译的 Perl,但即使没有它,您也可以在代码运行时在各个关键点计算和记录分配的标量、散列和数组的数量。这足以确定我们的泄漏情况。We used
Devel::Leak
. To work fully, you need a debugging compiled Perl, but even without that, you can count and log the number of allocated scalars, hashes, and arrays, as your code runs, at various key points. That was enough to pin down the leaks we had.