Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
PerlMonks  

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:~$


Comment on Re: Re: Re: do/redo or for(;;): what's Kosher?
Select or Download Code
(tye)Re2: do/redo or for(;;): what's Kosher?
by tye (Cardinal) 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?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (18)
As of 2015-07-06 18:37 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (80 votes), past polls