Profiling with Devel::NYTProf
Profiling Profiling:  allows us to know what our programs are doing so we know where to optimize You actually need to prof...
Devel::NYTProf: A History Devel::DProf Devel::SmallProf Old & broken! Has issues with current versions of Perl. Clock is t...
Devel::NYTProf Why it's awesome * Profiles per: Line Subroutine Block * Inclusive & exclusive subroutine timing * Very fas...
#Create nytprof.out: $ perl -d:NYTProf phone.cgi #Create nytprof directory & csv files: $ nytprofcsv Open .csv files in sp...
nytprofcsv: Time per Line nytprofcsv: Time per Line Kinda icky
Devel::NYTProf & nytprofhtml Create nytprof.out: $ perl -d:NYTProf phone.cgi Create nytprof directory & html files: $ nytp...
nytprofhtml: Top 15 Subroutines Links to source code Subroutine index with sortable columns
nytprofhtml: Top Packages Color coding based on median average deviation
nytprofhtml: Top Source Code Files
nytprofhtml: treemap
nytprofhtml: Time per Sub enter subroutine -  leave subrountine  Color coding relative to rest of file Annotates source code
nytprofhtml: Time per Line start of one statement to the next (;) expensive CPU & IO, too much detail
nytprofhtml: Time per Block Compromise
Kcachegrind Tool to generate and analyze callgraphs (graphs relationships between subroutines) Valgrind Cachegrind Callgri...
Devel::NYTProf & nytprofcg Currently NYTProf v.2 NYTProf v.3: nytprofcg! http://code.google.com/p/perl-devel-nytprof/sourc...
Devel::NYTProf & nytprofcg Create nytprof.out: $ perl -d:NYTProf phone.cgi Create nytprof.callgraph $ nytprofcg Load callg...
Source Code & Callees Callees Source Code
Callee Map & Call Graph Percentage of time in each function Call graph Tree View
Devel::NYTProf::Apache Profile mod_perl! (Not supported on Windows) Add these guys to your apache conf file: PerlPassEnv N...
Resources http://en.oreilly.com/oscon2009/public/schedule/detail/7941 http://blog.timbunce.org/2008/07/15/nytprof-v2-a-maj...
Upcoming SlideShare
Loading in...5
×

Profiling with Devel::NYTProf

9,429

Published on

A brief overview of profiling with Devel::NYTProf.

Published in: Technology, Business
0 Comments
7 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
9,429
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
31
Comments
0
Likes
7
Embeds 0
No embeds

No notes for slide

Profiling with Devel::NYTProf

  1. 1. Profiling with Devel::NYTProf
  2. 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. 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. 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. 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)
  6. 6. nytprofcsv: Time per Line nytprofcsv: Time per Line Kinda icky
  7. 7. Devel::NYTProf & nytprofhtml Create nytprof.out: $ perl -d:NYTProf phone.cgi Create nytprof directory & html files: $ nytprofhtml Open ./nytprof/index.html
  8. 8. nytprofhtml: Top 15 Subroutines Links to source code Subroutine index with sortable columns
  9. 9. nytprofhtml: Top Packages Color coding based on median average deviation
  10. 10. nytprofhtml: Top Source Code Files
  11. 11. nytprofhtml: treemap
  12. 12. nytprofhtml: Time per Sub enter subroutine - leave subrountine Color coding relative to rest of file Annotates source code
  13. 13. nytprofhtml: Time per Line start of one statement to the next (;) expensive CPU & IO, too much detail
  14. 14. nytprofhtml: Time per Block Compromise
  15. 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. 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
  17. 17. Devel::NYTProf & nytprofcg Create nytprof.out: $ perl -d:NYTProf phone.cgi Create nytprof.callgraph $ nytprofcg Load callgraph into Kcachegrind $ kcachegrind nytprof.callgraph
  18. 18. Source Code & Callees Callees Source Code
  19. 19. Callee Map & Call Graph Percentage of time in each function Call graph Tree View
  20. 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=
  21. 21. Resources http://en.oreilly.com/oscon2009/public/schedule/detail/7941 http://blog.timbunce.org/2008/07/15/nytprof-v2-a-major-advance-in-perl-profilers/ http://blog.timbunce.org/2009/08/07/nytprof-v3-a-sneak-peak/#more-301 http://code.google.com/p/perl-devel-nytprof/source/checkout CPAN!
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×