Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
PerlMonks  

Re: perl compiler optimizer curiosity

by Athanasius (Archbishop)
on Mar 12, 2022 at 04:23 UTC ( [id://11142024]=note: print w/replies, xml ) Need Help??


in reply to perl compiler optimizer curiosity

Hello smile4me,

1. does the perl compiler optimize away the debug's when the ENV{DEBUG_LEVEL} is 0?

No.

2. is there a cost to leaving the debug()'s inline?
3. should I remove them to improve performance overall?

Yes, there is a cost, but it’s probably negligible. If performance becomes a problem, you should first profile the code using a module such as Devel::NYTProf to find the bottlenecks. Unless your debug statements are placed inside heavy-duty loops, it’s unlikely they will degrade performance significantly.

4. is there a better way to accomplish the goal of simple on/off for debugging one's code?

If you want the compiler to eliminate debugging code when debugging is not required, you need to code like this:

use constant DEBUG => $ENV{DEBUG_LEVEL} // 0; # Handle undef gr +acefully ... sub helpful { my $int = shift; debug(1, "called with: ", $int) if DEBUG > 0; # <-- Add this ## do stuff here ... my $val = $int * $int; debug(3, "output: ", $val) if DEBUG > 0; # <-- Add this print "$int becomes: $val \n"; } ...

You can check with perl -MO=Deparse that when DEBUG == 0, the debug statements are removed by the compiler.

Hope that helps,

Athanasius <°(((><contra mundum Iustus alius egestas vitae, eros Piratica,

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others exploiting the Monastery: (6)
As of 2024-04-19 08:53 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found