mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-08-02 04:56:14 +00:00
javap showed the hexToByte/byteToHex field re-loaded on every use inside these methods (16 times per readLong call) — the JVM/ART doesn't reliably prove the load loop-invariant. Hoisting it into a local measured ~25% faster for decode and ~10% for isEqual and readLong on the JVM (4096 random 32-byte ids, best-of-150 rounds, 3 repeats); encode was neutral on HotSpot but is hoisted too since ART is historically worse at this (see the internalIsHex comment). Branchless variants of isHex/isHex64 were also measured and were a wash-to-slightly-worse than the branchy early-exit versions on valid input, so those keep their current implementations. Also adds the new exact-size codecs to the on-device HexBenchmark (decode64, decode64OrNull, encode64, decode128, encode128, toLong256, and the old isHex64+decode two-pass for comparison) so ART numbers can be collected with the existing benchmark harness. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Hwv6XwT9mwGUQc57zH4ky4