Nick Glencross wrote:
Having looked into it a little further, it actually looks like the 'ord' operation is a significant part of the (JIT) run, perhaps as much as 50%, which seems disproportionately high... (you can just comment out the ord to see this)
Yeah, string_ord() isn't really fast, but ...
I wrote: | There are always some optimizations still.
... so I just did fully inline JIT the fast path with fixed8 encoding.
And compiling an --optimize'd Parrot helps too a lot. Here are fresh numbers:
md5sum of perl-5.8.0.tar.gz size=11023084
parrot -j 2.63 user 2.68 real # unoptimized build parrot -j rot 2.57 user 2.75 real # unopt. buil rot opcode
parrot -j ord 1.10 user 1.26 real # opt. build rev 8072
md5sum 0.11 user, 0.20 real # C Digest::Perl::MD5 29.00 real # perl Digest::MD5 0.50 real # XS Tools/scripts/md5sum.py 0.44 real # C
Nick
leo