[Pdx-pm] oh, gross grep() re-evaluates the regex

Eric Wilhelm scratchcomputing at gmail.com
Sun Mar 12 18:39:33 PST 2006


# from Eric Wilhelm
# on Sunday 12 March 2006 06:21 pm:

>But, hey!
>
>$ perl -e 'my $obj = "main";
>  sub foo {warn "hey\n"; "thing"};
>  print grep(/${\($obj->foo)}/, "a thing", "deal", "stuff");'
>hey
>hey
>hey
>a thing
>
>Temp variable pops you out of the need to call the method every time,
> so if you increase the size of @search, your numbers are going to get
> a lot worse.  Did you guess that would happen?  I sure didn't!

So, I just had to try it.  With only 100 elements, the tmpv version is 
hugely faster.

      aref: 28 secs @ 4k/s
      sref: 18 secs @ 6k/s
      tmpv:  5 secs @ 21k/s

  http://scratchcomputing.com/tmp/grep_subcall.pl

It's all setup if you want to flip the 0 on that first if() and load 
something out of project Gutenberg for a larger, more random test set.

--Eric
-- 
A counterintuitive sansevieria trifasciata was once literalized 
guiltily.
--Product of Artificial Intelligence
---------------------------------------------------
    http://scratchcomputing.com
---------------------------------------------------


More information about the Pdx-pm-list mailing list