Faster Double-to-String Conversion
5 months ago
- #performance
- #floating-point
- #optimization
- 新开发了一种二进制到十进制的浮点数转换方法,其性能超越了现有算法如Dragonbox、Schubfach和std::to_chars。
- 性能提升包括:在macOS上比Dragonbox快约68%,比sprintf快约59倍。
- 关键优化措施包括:减少整数乘法运算、更快的对数近似计算以及无分支处理不规则舍入区间。
- 该方法将候选数字数量从2-4个减少到1-3个,从而简化了转换流程。
- 在有效数字和指数输出方面的改进包括:使用查找表获取十进制数字,以及无分支去除末尾零。
- 该算法计划集成到{fmt}库中,并可能为Thrift等应用的JSON序列化带来性能提升。
- 当前局限性在于仅支持科学计数法格式,未来计划增加定点数格式支持。