Hasty Briefsbeta

双语

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序列化带来性能提升。
  • 当前局限性在于仅支持科学计数法格式,未来计划增加定点数格式支持。