Beefy Boxes and Bandwidth Generously Provided by pair Networks vroom
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

benchmarking code conditionally

by punkish (Priest)
on Feb 24, 2011 at 02:56 UTC ( #889896=perlquestion: print w/ replies, xml ) Need Help??
punkish has asked for the wisdom of the Perl Monks concerning the following question:

I tend to do a lot of

sub foo { my $t0 = Benchmark->new(); .. code .. my $t1 = Benchmark->new(); say "foo() took" . timestr(timediff($t1, $t0)); } sub bar { my $t0 = Benchmark->new(); .. code .. my $t1 = Benchmark->new(); say "bar() took" . timestr(timediff($t1, $t0)); }

What I really want is all that Benchmark-ing to be switchable. So, if I have a config switch $BENCHMARKIT = 1;, all that Benchmark nonsense should run, including printing out the messages. However, if I turn it off with $BENCHMARKIT = 0;, then it should all be skipped.

How do I go about accomplishing the above?

New note: I have now deployed Log::Dispatch to do my logging to file or screen or both, replacing my code below. Still seeking wisdom for the benchmarking query above.

Additional note: Fwiw, I do something similar with my homemade debugging. Instead of

sub foo { say "Starting foo() with yadda"; .. code .. say "Now doing stuff"; .. code .. say "Now munging"; say "Done with foo()"; }

I do something like so

my $DEBUG = 1; sub foo { logit "Starting foo() with yadda"; .. code .. logit "Now doing stuff"; .. code .. logit "Now munging"; logit "Done with foo()"; } sub logit { my ($msg) = @_; if ($DEBUG) { say $msg; } }
--

when small people start casting long shadows, it is time to go to bed

Comment on benchmarking code conditionally
Select or Download Code
Re: benchmarking code conditionally
by SimonClinch (Chaplain) on Feb 24, 2011 at 14:36 UTC
    use BenchWrapper; my $BENCHMARKIT = 1; ... my $bwo = BenchWrapper -> new( $BENCHMARKIT ); ... sub foo { my $t0 = $bwo -> mark; ... my $t1 = $bwo -> mark; ... } ... package BenchWrapper; use Benchmark; sub new { bless { BENCHMARKIT => shift() }; } sub mark { $_[0] -> { BENCHMARKIT } and return Benchmark -> new; } 1;

    One world, one people

Re: benchmarking code conditionally
by Anonymous Monk on Feb 24, 2011 at 14:54 UTC

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://889896]
Approved by broomduster
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (15)
As of 2014-04-24 12:09 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    April first is:







    Results (565 votes), past polls