[Chicago-talk] Performance, and using a hash in a regex

Andy Lester andy at petdance.com
Thu Jul 13 17:03:59 PDT 2006


> If this is a one-off, or a nightly thing where speed doesn't  
> matter, and
> the file listing is sufficiently small (<1000?), and you're  
> comfortable
> with one solution as opposed to the other, I'd say take your pick, and
> Andy's point is more than valid.

Even more to the point, it may not matter in the context of the program.

If going thru the regexes to find the filename takes, say, 100  
milliseconds, and processing each file takes 5 seconds (or 5000  
milliseconds), then each file takes 5100 milliseconds.

Now, you go poking at the regex matching.  Usually when you go  
optimizing you might get 10-30% if you're lucky, but in this case  
that you can speed up the regex matching by 90%!  Now each file will  
take 5010 milliseconds.

So because you found a faster way to match filenames, you sped up  
from 5100ms to 5010ms.  That's an improvement of 1.8% of your total  
run time.

What if you'd profiled your code first, and found a way to improve  
the file processing time by only 10%?  Now you're going to take  
4600ms instead of 5100, an improvement of 9.8%.

Always remember the three rules of optimization:

1) Don't.
2) (for experts) Don't yet.
3) Profile first.

http://72.14.203.104/search?q=cache:vHW8UrQ1eE8J:magnonel.guild.net/ 
~schwern/talks/How_To_Be_Lazy/full_slides/rules_of_optimization.html 
+rules+of+optimization

(The original site of Schwern's slides is non-responsive)

How do you measure?  You use a profiler like Devel::DProf or  
Devel::SmallProf.

xoxo,
Andy


--
Andy Lester => andy at petdance.com => www.petdance.com => AIM:petdance






More information about the Chicago-talk mailing list