Devel::NYTProf is a profiler for Perl programs that provides per-line and per-subroutine timing information. It generates HTML and CSV reports that help identify inefficient code. To use it, run a Perl program with -d:NYTProf and then generate reports with nytprofhtml or nytprofcsv for analysis. The profiler is fast and its reports integrate well with other tools like Kcachegrind for call graph visualization.
2. Profiling Profiling: allows us to know what our programs are doing so we know where to optimize You actually need to profile before optimizing because you never know where the problems are going to be.
3. Devel::NYTProf: A History Devel::DProf Devel::SmallProf Old & broken! Has issues with current versions of Perl. Clock is too slow for current CPU times. Devel::FastProf Devel::NYTProf Versions 1, 2, 3 Hooray! Per line profiling Per line profiling but faster
4. Devel::NYTProf Why it's awesome * Profiles per: Line Subroutine Block * Inclusive & exclusive subroutine timing * Very fast * Awesome html reports (based on Devel::Cover) * Easy to use with mod_perl Devel::NYTProf::Apache
5. #Create nytprof.out: $ perl -d:NYTProf phone.cgi #Create nytprof directory & csv files: $ nytprofcsv Open .csv files in spreadsheet application or whatever Devel::NYTProf & nytprofcsv -d:foo executes the program under the control of a debugging, profiling or tracing module (e.g. Devel::foo)
15. Kcachegrind Tool to generate and analyze callgraphs (graphs relationships between subroutines) Valgrind Cachegrind Callgrind Kcachegrind Memory debugging & profiling CPU cache profiler Cachegrind with call graphs GUI for Cachegrind
16. Devel::NYTProf & nytprofcg Currently NYTProf v.2 NYTProf v.3: nytprofcg! http://code.google.com/p/perl-devel-nytprof/source/checkout Creates callgraph data that can be read by Kcachegrind
19. Callee Map & Call Graph Percentage of time in each function Call graph Tree View
20. Devel::NYTProf::Apache Profile mod_perl! (Not supported on Windows) Add these guys to your apache conf file: PerlPassEnv NYTPROF PerlModule Devel::NYTProf::Apache nytprof.$$.out will end up in /tmp/ unless you specify otherwise by setting the NYTPROF environment variable file=