[][src]Module lexical::atof

Fast lexical string-to-float conversion routines.

The following benchmarks were run on an "Intel(R) Core(TM) i7-6560U CPU @ 2.20GHz" CPU, on Fedora 28, Linux kernel version 4.18.16-200 (x86-64), using the lexical formatter or x.parse(), avoiding any inefficiencies in Rust string parsing. The code was compiled with LTO and at an optimization level of 3.

The benchmarks with std were compiled using "rustc 1.29.2 (17a9dc751 2018-10-05", and the no_std benchmarks were compiled using "rustc 1.31.0-nightly (46880f41b 2018-10-15)".

The benchmark code may be found benches/atof.rs.

Benchmarks

Type lexical (ns/iter) parse (ns/iter) Relative Increase
f32 761,670 28,650,637 37.62x
f64 1,083,162 123,675,824 114.18x

Raw Benchmarks

test f32_lexical ... bench:     761,670 ns/iter (+/- 194,856)
test f32_parse   ... bench:  28,650,637 ns/iter (+/- 7,269,036)
test f64_lexical ... bench:   1,083,162 ns/iter (+/- 315,101)
test f64_parse   ... bench: 123,675,824 ns/iter (+/- 20,924,195)

Raw Benchmarks (no_std)

test f32_lexical ... bench:     652,922 ns/iter (+/- 44,491)
test f32_parse   ... bench:  24,381,160 ns/iter (+/- 687,175)
test f64_lexical ... bench:     835,822 ns/iter (+/- 28,754)
test f64_parse   ... bench: 113,449,442 ns/iter (+/- 3,983,104)

Functions

atof32_unsafe

Unsafe, C-like importer for signed numbers.

atof32_bytes

Low-level bytes to number parser.

atof64_unsafe

Unsafe, C-like importer for signed numbers.

atof64_bytes

Low-level bytes to number parser.

try_atof32_bytes

Low-level bytes to number parser. On error, returns position of invalid char.

try_atof64_bytes

Low-level bytes to number parser. On error, returns position of invalid char.