メモリ使用量を調べられるDevel::MemUsedを使ってみた

はじめまして。yukiinu2ndです。
随分間が空いてしまいましたが、R&Dブログに初投稿します。
人前でこういった形で書くことは初めてなので、読みにくい点等あるかもしれませんが参考にして頂ければ幸いです。

今回はPerlでメモリ使用量を調べることができるモジュールDevel::MemUsedを紹介します。

メモリ使用量を確認したい対象が変数であればDevel::Sizeでよいのですが、
スクリプト中で範囲を決めて、その範囲内で消費しているメモリを確認する方法はないかな、
ということで探していたところできそうなモジュールを見つけたので試してみました。

インストール

おなじみのCPANでインストールします。ここではCPANの説明は割愛します。

install Devel::MemUsed

このモジュールは以下のモジュールに依存しているため、合わせてインストールします。
CPANが「このモジュールが必要なのでインストールしますか?」という質問をするのでYesで答えるだけです。

  • Devel::Mallinfo
  • Contextual::Return
  • Want

使い方

まず、Devel::MemUsedをuseします。

use Devel::MemUsed;

次に計測開始したい箇所でインスタンスをします。

my $memused = Devel::MemUsed->new();

あとは計測したいところで作ったインスタンスをprint等で変数展開したり、
インスタンスのused()を呼び出せばOKです。
計測開始場所(インスタンス生成)からの使用メモリ量を返してくれます。

print "MemUsed $memused \n";
my $um = $memused->used();

計測地点を変えて再スタートしたい(リセットしたい)場合はreset()を呼び出せばOKです。
またその地点から計測開始となります。

$memused->reset();
#……
#何かしらの処理
#……
print $memused->used();

このように、簡単にメモリ使用量を確認できる便利なおすすめモジュールですので、
是非使ってみてください。
#膨大なデータ処理を行う時、出力やログにメモリ消費量を記録できるのは助かります……。