in reply to Re: Optimize debugging subs
in thread Optimize debugging subs

This benchmark indicates that you are wrong.
sub ENABLE_DEBUG () { 0 } sub debug_inelegant { print $_[0]; } sub debug_elegant { print $_[0] if ENABLE_DEBUG; } use Benchmark qw(:all) ; cmpthese( 30000000, { 'inelegant' => "debug_inelegant 'test' if ENABLE_DEBUG;", 'elegant' => "debug_elegant 'test';" }, );
Output:
Rate elegant inelegant elegant 3337041/s -- -95% inelegant 62500000/s 1773% --

--Dan

Replies are listed 'Best First'.
Re^3: Optimize debugging subs
by ikegami (Patriarch) on Apr 05, 2006 at 05:07 UTC
    According to your benchmark, elegant takes 0.0000003 seconds (0.3 microseconds) to execute. What's the problem?

      Good point; what about this?

      Lots debug() calls inside a long-running loop, inside many very frequently called subs, running in a virtual server program (with access to only 10% of the CPU), running on a commodity server (Pentium-III 1.3 Ghz), being accessed by many simultaneous clients.

      That's a lot different than the Benchmark I just ran on a Athlon64 X2 2.4ghz.

      Besides, what about the enjoyment of knowing that there is *no* debugging code in your program?

      --Dan

        Besides, what about the enjoyment of knowing that there is *no* debugging code in your program?

        Enjoyment? In practice, I've found debug vs production optimizations a source of headaches. Also, I've found the production version is not sufficiently tested. People assume the production version will work because the debug version does.