Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Re: Profile compilation

by kcott (Archbishop)
on Aug 30, 2017 at 03:50 UTC ( [id://1198317]=note: print w/replies, xml ) Need Help??


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

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1198317]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others about the Monastery: (3)
As of 2024-04-25 20:35 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found