When Compiler Optimizations Hurt Performance
7 months ago
- #UTF-8
- #Performance
- #Benchmarking
- UTF-8序列长度计算的基准测试技术揭示了性能差异
- 硬件辅助的前导零位计数性能表现不佳(处理速度438 MB/s至462 MB/s),不如朴素方法
- 编译器生成的switch-case优化查找表性能反而劣于分支指令(超过2000 MB/s)
- 在clang++中使用`-fno-jump-tables`禁用跳转表后,性能提升至与朴素方法相当
- 针对AArch64架构的GNU g++编译器不会生成查找表,使得`-fno-jump-tables`选项无效
- Julian Squires(2017年)的前期研究在x86-x64平台上得出了类似结论