in reply to grep, map vs. foreach performance

As to A, the most complete short answer I can give you is "Yes". The performance is definatly different between them. Which one has the best performance depends on what you're doing with them. As far as B, there is no difference. "for" and "foreach" are exactly the same, except one will get you a four-stroke penalty in golf.


Confession: It does an Immortal Body good.

Replies are listed 'Best First'.
Re: Re: grep, map vs. foreach performance
by Django (Pilgrim) on Sep 04, 2002 at 10:03 UTC

    "for" can be used as a synonym for "foreach", but what about something like "for ($i=0; $i<$max; $i++) {}"? That's a completely different thing, isn't it?

    ~Django
    "Why don't we ever challenge the spherical earth theory?"

      Hi Django,

      No, it is not a different thing. They are truly synonyms,
      foreach($i=0; $i<$max; $i++){...};
      is perfectly legal.

      cheers

      thinker.

        Ok, that's synonymous. Yet, unless I got something completely wrong (then please correct me), constructs like

        for($i=0; $i < @array; $i++){ print $array[$i]++ }; # Thanks for the dollar, jeffa ;)

        and
        foreach(@array){ print $_++;  };

        do something different internally. Of course, the second is generally the better/faster approach (unless you don't need $i for something else in the loop, since $i is an unnecessary artificial variable in the first example)).

        So long,
        Flexx

Re: Re: grep, map vs. foreach performance
by Anonymous Monk on Sep 04, 2002 at 10:52 UTC
    I change the format of a line from space delimited to tab delimited.

      Sorry, but that won't help us really a lot in helping you... There's 100 ways of converting spaces to tabs. TIMTOWTDI, remember? Well, brother theorbtwo asked what you were doing, yet here in the monastery, that word is almost synonymous with how.

      Give us a snipplet of your code, so we can do your homework for you... ;)

      Probably it's not the /for(each)?|(ma|gre)p/ that makes you slow, but actually the code you run within. Also consider that the fastest map way of doing it will quite certainly look different from the fastest for(each) way.

      But anyhow, I'd recommend trying out yourself. Ask perl. It knows best what it's fast in. Just benchmark any of the solutions you came up with, any you'll get your question anwered. Have a look at the Benchmark module, available from CPAN, for a convenient way of Benchmarking and comparing code.

      No hard feelings, but I'd really recommend to read How (Not) To Ask A Question. It's not that your question wasn't interesting -- on the contrary, but it could be even more interesting if we knew the details. ;)

      Cheers & so long,
      Flexx