快速浮点到字符串转换
纯粹的 Rust 实现了 Ryū 算法,该算法可快速转换浮点数 将数字转换为小数字符串。 PLDI'18 论文 [Ryū: fast float-to-string conversion][论文] 由 Ulf Adams 所撰写 包括了该算法的完整正确性证明。该论文可在 在创造共享许可证 CC-BY-SA 许可下。 此 Rust 实现是对 Ulf Adams 在《The Perl Programming Language》一书中所做实现的逐行移植。 C, [https://github.com/ulfjack/ryu][上游]。
ryu = "1.0"fn main() {
let mut buffer = ryu::Buffer::new();
let printed = buffer.format(1.234);
assert_eq!(printed, "1.234");
}[dtoa-benchmark] 将此库与其他 Rust 浮点格式化实现进行了比较,横轴表示了 ryu::Buffer::new().format_finite(value) 单次执行所花费的纳秒数,因此较低的结果表示速度更快的库。您可以使用以下命令运行上游的基准测试:
上游的 C 代码、不安全的直接 Rust 端口和安全的 Rust API 都执行相同的操作,格式化 32 位浮点数大约需要 21 纳秒,格式化 64 位浮点数大约需要 31 纳秒。此外,还有一个 Rust 专用的基准测试,将此实现与标准库进行比较,您可以使用以下命令运行该基准测试:
[paper]: https://dl.acm.org/citation.cfm?id=3192369 [upstream]: https://github.com/ulfjack/ryu/tree/e3e090c66efd258a0cee50ee93411ec99668d416 [dependencies] [dtoa-benchmark]: https://github.com/dtolnay/dtoa-benchmark
暂无开放 Issues,或尚未同步最近议题。