Alex Rivera | Logout

How do I profile my Perl programs?

Asked 2010-12-06T22:46:38.220
44

I need to improve the performance of my Perl application. How can I find the slow spots?


This is a question from the official perlfaq. We're importing the perlfaq to Stack Overflow.

Edit
Report

1 Answer

53

(This is the official perlfaq answer, minus any subsequent edits)

The Devel namespace has several modules which you can use to profile your Perl programs. The Devel::DProf module comes with Perl and you can invoke it with the -d switch:

$ perl -d:DProf program.pl

After running your program under DProf, you'll get a tmon.out file with the profile data. To look at the data, you can turn it into a human-readable report with the dprofpp program that comes with Devel::DProf:

$ dprofpp

You can also do the profiling and reporting in one step with the -p switch to dprofpp:

$ dprofpp -p program.pl

The Devel::NYTProf (New York Times Profiler) does both statement and subroutine profiling. It's available from CPAN and you also invoke it with the -d switch:

$ perl -d:NYTProf some_perl.pl

Like DProf, it creates a database of the profile information that you can turn into reports. The nytprofhtml command turns the data into an HTML report similar to the Devel::Cover report:

$ nytprofhtml

CPAN has several other profilers that you can invoke in the same fashion. You might also be interested in using the C to measure and compare code snippets.

You can read more about profiling in Programming Perl, chapter 20, or Mastering Perl, chapter 5.

perldebguts documents creating a custom debugger if you need to create a special sort of profiler. brian d foy descr

answered 2010-12-06T22:54:39.563

Your Answer