When Compilers Disagree About UTF‑8
20 hours ago
- An open-source C++ library for UTF-8 handling was initially created without heavy optimization.
- Optimization focused on ASCII shortcut: ASCII characters (range U+0000–U+007F) always pass UTF-8 validity checks, allowing early return.
- A simple ASCII fast-path tripled Clang's performance on pure ASCII text, with 34% improvement on mixed text.
- GCC showed no change on pure ASCII and 3-4% worse performance on mixed text for the same optimization.
- Analysis revealed Clang did not eliminate post-decoding checks, while GCC already optimized them away.
- A refined approach (inline validation in decode functions) improved performance on both compilers: preserved Clang gains, added 15-20% improvement on GCC mixed text.
- Lesson: compiler behavior varies; careful optimization can yield significant gains.