in reply to Re^3: Efficient bit-twiddling in Perl.
in thread Efficient bit-twiddling in Perl.
Your benchmark is not very realistic. As $n doesn't vary, you are completely ignoring the effect of the CPU cache misses that the lookup table may introduce.
The version of my benchmark I posted was the one I use -- in conjunction with -N=1 and uncommenting the print "@_"; -- to check that the output from all the methods is correct.
For timing runs, I operate on the loop counter $_, which when -N=10e6, is enough to exercise the full range of the table 38 times.
And I still get 20%+ improvement from the AoAs lookup:
Results
C:\test>1021064 Shift&and took: 0.000000606833 seconds Lookup took: 0.000000485629 seconds Lookup2 took: 0.000000669586 seconds (un)pack took: 0.000007564075 seconds
In general, I've found it very difficult to detect, much less measure any discernible effect from cpu caching in perl code on my machine. It shows up readily in tight loops in C code, but Perl's memory allocation is so cache unfriendly that it rarely seems to come into play.
I would be interested to see the output from the above on your machine if you have a coupe of minutes.
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^5: Efficient bit-twiddling in Perl.
by salva (Canon) on Mar 01, 2013 at 13:25 UTC | |
by BrowserUk (Patriarch) on Mar 01, 2013 at 13:28 UTC | |
by salva (Canon) on Mar 01, 2013 at 14:11 UTC | |
by BrowserUk (Patriarch) on Mar 01, 2013 at 14:30 UTC | |
Re^5: Efficient bit-twiddling in Perl.
by Tux (Canon) on Mar 01, 2013 at 14:05 UTC | |
by BrowserUk (Patriarch) on Mar 01, 2013 at 14:49 UTC | |
Re^5: Efficient bit-twiddling in Perl.
by Tux (Canon) on Mar 01, 2013 at 14:07 UTC |