1 个不稳定版本
使用旧的Rust 2015
0.1.2 | 2018年7月30日 |
---|---|
0.1.1 |
|
0.1.0 |
|
#1243 in 编码
66KB
853 行
概述
这是一个由Google德国的Ulf Adams开发的Ryū浮点数转字符串转换算法的高性能本地Rust实现。
描述
此crate的目的是提高将f32和f64转换为字符串表示的速度,这在执行大量序列化时尤为重要,例如JSON、CSV、XLSX和科学数据格式,其中所有数字都内部以浮点数形式处理。在某些情况下,这可能是序列化的瓶颈。
在开发此代码时,注意到serde_json crate引用了dtoa crate,后者速度较慢且包含不安全代码。此crate不使用不安全代码,并且可能使用#![no_std]
。
状态
前景看好,Ryū bench_write_f32_shortest
函数的表现显著优于当前可用的替代方案
test tests::bench_dtoa ... bench: 45 ns/iter (+/- 1)
test tests::bench_f32_debug ... bench: 108 ns/iter (+/- 0)
test tests::bench_f32_format ... bench: 109 ns/iter (+/- 0)
test tests::bench_write_f32_shortest ... bench: 25 ns/iter (+/- 0)
该crate的0.1.1版本中对函数的f32版本进行了彻底测试,保证使用此库转换时,所有可能的2^32浮点数值都可以进行无精度损失的往返转换
...
99.930916% complete
99.95419% complete
99.97748% complete
test test_exhaustive_roundtrip ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
对于f64版本的函数,有一个不太彻底的测试可用,但显然不能完全彻底,因为这需要数年的时间来运行。
待办事项
[ ] 实现两位查找表并进行基准测试。[ ] 清空缓存时比较性能与替代方案。[ ] 添加使用整数表示整数的JSON样式打印。