Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change

Re: Re: Re: do/redo or for(;;): what's Kosher?

by Juerd (Abbot)
on Jan 04, 2002 at 00:24 UTC ( #136070=note: print w/replies, xml ) Need Help??

in reply to Re^2: do/redo or for(;;): what's Kosher?
in thread do/redo or for(;;): what's Kosher?

And here's the benchmark to prove it:
#!/usr/bin/perl -w use strict; use Benchmark; Benchmark::cmpthese(10_000, { 'C-style' => sub { for (my $i = 0; $i <= 1000; $i++){ undef } }, 'foreach' => sub { for my $i (0..1000) { undef } } }); __END__ Benchmark: timing 10000 iterations of C-style, foreach... C-style: 5 wallclock secs ( 5.20 usr + 0.00 sys = 5.20 CPU) @ 19 +23.08/s (n=10000) foreach: 4 wallclock secs ( 3.73 usr + 0.00 sys = 3.73 CPU) @ 26 +80.97/s (n=10000) Rate C-style foreach C-style 1923/s -- -28% foreach 2681/s 39% --

By the way: does perl have absolutely _no_ optimisation for for (;;) without any expressions in its parens? I find that a bit hard to believe.

2;0 juerd@ouranos:~$ perl -e'undef christmas' Segmentation fault 2;139 juerd@ouranos:~$

Replies are listed 'Best First'.
(tye)Re2: do/redo or for(;;): what's Kosher?
by tye (Sage) on Jan 04, 2002 at 22:55 UTC

    $ perl -MO=Deparse -e "while(1){die}" for (;;) { die; } -e syntax OK
    which tells me that Perl considers while(1) and for(;;) to be the same, which means it does optimize for(;;) into a simple infinite loop.

            - tye (but my friends call me "Tye")

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://136070]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others exploiting the Monastery: (6)
As of 2017-01-24 05:47 GMT
Find Nodes?
    Voting Booth?
    Do you watch meteor showers?

    Results (203 votes). Check out past polls.