OKay. After walking away for a while the penny dropped. Use vec instead of unpack and avoid map and a slice by unwinding the loop.
Addition to the benchmark above.
vec_x4 => q[ @nybbles = (vec($n, 2, 4), vec($n, 3, 4), vec($n, 0, 4), vec +($n, 1, 4)); ],
Results for comparison with those above
vec_x4 42230/s 490% 319% 231% 230% 176% --
Which by my reckoning, (15328*20210)/8188 = 37833 -v- 42230 makes this around 10% faster than the Inline-C version, thought the difference will probably be absorbed once its wrapped in a function as that is. Still, Perl wins again.
I'd still like to see the XS version.
Examine what is said, not who speaks.
The 7th Rule of perl club is -- pearl clubs are easily damaged. Use a diamond club instead.
In reply to Re: Nybbles take to long (Solved?)
by BrowserUk
in thread Nybbles take to long
by BrowserUk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |