in reply to Does it Iactually/I run faster?

Benchmarking it on my machine shows the multi line version running faster than the one liner.
use Benchmark; @array = ('elementary school', 'blah blah blah', 'stuff', 'hello', 'ya +y'); timethese(100000, { 'one line' => '&one_line', 'multi line' => '&multi_line'}); sub one_line { do {s/\s+/\t/; s/elementary/my dear Watson/g;} for @array; } sub multi_line { for ( @array ) { s/\s+/\t/; s/elementary/my dear Watson/g; } }

multi line: 5 wallclock secs ( 5.04 usr + -0.01 sys = 5.03 CPU) @ 19880.72/s (n=100000)
one line: 5 wallclock secs ( 5.72 usr + 0.00 sys = 5.72 CPU) @ 17482.52/s (n=100000)

Replies are listed 'Best First'.
RE: Re: Does it Iactually/I run faster?
by vkonovalov (Monk) on Jul 04, 2000 at 19:27 UTC
    This can't be true, because:
    d:\>perl -MO=Deparse -e "do {s/\s+/\t/; s/elementary/my dear Watson/g; +} for @array;" foreach $_ (@array) { s/\s+/\t/; s/elementary/my dear Watson/g;; } -e syntax OK

    You machine probably was overloaded with some extra tasks second time. And I beleive multiline version compiled into the same code internally.

      Sweet! writing obfusicated code just got a lot harder.
      Maverick goes pouring through the docs on B


      holy crap! that is the coolest thing i have seen in forever, I had NO idea you could do that! -MO=Deparse... wow, I am angered that i can only ++ this once, that is one of the most useful things I have seen in forever! Thank you!
RE: Re: Does it Iactually/I run faster?
by greenhorn (Sexton) on Jul 06, 2000 at 01:25 UTC

    Thanks on two accounts (the second being: reading your message, now I have an idea how to use Benchmark).

    The results here confirm what you observed:

    Benchmark: timing 500000 iterations of multi line, one line... multi line: 12 wallclock secs (12.31 usr + 0.00 sys = 12.31 CPU) one line: 16 wallclock secs (14.64 usr + 0.00 sys = 14.64 CPU)