I am confused by that statement. After eliminating the subroutine overhead (inlining everything), I can encode and decode 1 million strings in under 3 seconds. When I read that yours was taking 28 seconds I didn't even bother to check it. Can you please provide your benchmark code?
The code I checked was the version posted, which did not inline subs. Obviously, inlining subs will speed up all the versions.
My version averages about 27 seconds for a million strings on my computer which is a fairly low-powered netbook, several years old. Versus Re^3: Fast - Compact That String which averaged about 30 seconds for a million strings, on the same computer.
Thanks. Typically when you Benchmark things, you eliminate un-necessary IO once you prove each method is producing correct results. Also, using wall clock time is fine but since any given run can vary wildly, Benchmark is a more accurate method. I doubt I will have any cycles to set this up as describe above on my machine soon but if I do, I will post the results. Thanks again.