in reply to Profile compilation
G'day meetraz,
If you put this line
INIT { exit }
before any other INIT blocks, your "app" should terminate before any runtime processing occurs.
I put together this quick and dirty test script (pm_1198271_prof_compile_only.pl):
#!/usr/bin/env perl use strict; use warnings; use autodie ':all'; use Moose; BEGIN { print "BEGIN block\n"; } sub should_not_run { print "&should_not_run ran!\n"; } should_not_run(); print "This shouldn't print\n"; INIT { exit } INIT { print "This INIT shouldn't run.\n" }
Running that by itself:
$ pm_1198271_prof_compile_only.pl BEGIN block
Then doing as ++choroba suggested:
$ perl -d:NYTProf pm_1198271_prof_compile_only.pl BEGIN block $ nytprofhtml Reading nytprof.out Processing nytprof.out data Writing line reports to nytprof directory 100% ... Extracting subroutine call data ... Extracting subroutine links Generating subroutine stack flame graph ...
View "nytprof/index.html" in the browser of your choice. The third table, "Source Code Files — ordered by exclusive time then name", should show what you're looking for, longest compile time first.
By using 'INIT { exit }', the profile results won't contain any runtime data; and it's just one line to remove when you've finished.
— Ken
|
|---|