http://www.perlmonks.org?node_id=1004635


in reply to Re^4: Mark Jason Dominus And Me - The Partition Problem
in thread Mark Jason Dominus And Me - The Partition Problem

INTERESTING!

Maybe it doesn't hurt to program the way your brain really thinks...at least not this time. You see, I stripped down the MJD code to its barest form, exactly from the book. Then I removed the print statements from my own version which was just shared in the node previous to this node.

Surprise: despite the fact that I'm passing around a reference to my "$share" with each call, my code benches twice as fast. I'm betting it's because I'm not constantly recalculating the "$target".

Anyway, here's the benchmarks. I wonder what conclusions could be drawn. If I cared more, I'd run it through Devel::NYTprof and find out what's really going on and why it's faster to do it the way that makes the most sense to my dyslexic brain:

$ perl ./find_shares_myway_2.pl Benchmark: timing 500000 iterations of test1... test1: 16 wallclock secs (15.43 usr + 0.00 sys = 15.43 CPU) @ 32 +404.41/s (n=500000) $VAR1 = { 'test1' => bless( [ 16, '15.43', 0, 0, 0, 500000 ], 'Benchmark' ) }; $ perl ./find_shares.pl Benchmark: timing 500000 iterations of test1... test1: 31 wallclock secs (30.10 usr + 0.02 sys = 30.12 CPU) @ 16 +600.27/s (n=500000) $VAR1 = { 'test1' => bless( [ 31, '30.1', '0.02', 0, 0, 500000 ], 'Benchmark' ) };
--
Tommy
$ perl -MMIME::Base64 -e 'print decode_base64 "YWNlQHRvbW15YnV0bGVyLm1lCg=="'