[−][src]Module lexical::atoi
Fast lexical string-to-integer conversion routines.
These routines are wrapping, and therefore can accept any buffer for any size type, but will wrap to the desired value if overflow occurs.
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/atoi.rs
.
Benchmarks
Type | lexical (ns/iter) | parse (ns/iter) | Relative Increase |
---|---|---|---|
u8 | 62,790 | 67,926 | 1.08x |
u16 | 58,896 | 76,602 | 1.30x |
u32 | 103,962 | 139,434 | 1.34x |
u64 | 192,792 | 265,931 | 1.38x |
i8 | 89,828 | 109,099 | 1.21x |
i16 | 111,592 | 140,172 | 1.26x |
i32 | 155,172 | 189,377 | 1.22x |
i64 | 197,747 | 283,541 | 1.43x |
Raw Benchmarks
test i8_lexical ... bench: 89,828 ns/iter (+/- 9,172)
test i8_parse ... bench: 109,099 ns/iter (+/- 2,711)
test i16_lexical ... bench: 111,592 ns/iter (+/- 3,862)
test i16_parse ... bench: 140,172 ns/iter (+/- 7,194)
test i32_lexical ... bench: 155,172 ns/iter (+/- 5,248)
test i32_parse ... bench: 189,377 ns/iter (+/- 10,131)
test i64_lexical ... bench: 197,747 ns/iter (+/- 18,041)
test i64_parse ... bench: 283,541 ns/iter (+/- 14,240)
test u8_lexical ... bench: 62,790 ns/iter (+/- 3,146)
test u8_parse ... bench: 67,926 ns/iter (+/- 3,767)
test u16_lexical ... bench: 58,896 ns/iter (+/- 3,238)
test u16_parse ... bench: 76,602 ns/iter (+/- 3,771)
test u32_lexical ... bench: 103,962 ns/iter (+/- 4,870)
test u32_parse ... bench: 139,434 ns/iter (+/- 3,944)
test u64_lexical ... bench: 192,792 ns/iter (+/- 9,147)
test u64_parse ... bench: 265,931 ns/iter (+/- 8,308)
Raw Benchmarks (no_std
)
test i8_lexical ... bench: 94,142 ns/iter (+/- 5,252)
test i8_parse ... bench: 107,092 ns/iter (+/- 4,121)
test i16_lexical ... bench: 113,284 ns/iter (+/- 17,479)
test i16_parse ... bench: 141,393 ns/iter (+/- 5,804)
test i32_lexical ... bench: 155,704 ns/iter (+/- 5,590)
test i32_parse ... bench: 191,977 ns/iter (+/- 8,241)
test i64_lexical ... bench: 197,485 ns/iter (+/- 11,415)
test i64_parse ... bench: 298,771 ns/iter (+/- 13,941)
test u8_lexical ... bench: 61,893 ns/iter (+/- 1,171)
test u8_parse ... bench: 73,681 ns/iter (+/- 7,508)
test u16_lexical ... bench: 60,014 ns/iter (+/- 2,605)
test u16_parse ... bench: 78,667 ns/iter (+/- 2,899)
test u32_lexical ... bench: 102,840 ns/iter (+/- 2,770)
test u32_parse ... bench: 140,070 ns/iter (+/- 3,443)
test u64_lexical ... bench: 191,493 ns/iter (+/- 2,648)
test u64_parse ... bench: 279,269 ns/iter (+/- 12,914)
Functions
atoi8_unsafe⚠ | Unsafe, C-like importer for signed numbers. |
atoi8_bytes | Low-level string exporter for numbers. |
atoi16_unsafe⚠ | Unsafe, C-like importer for signed numbers. |
atoi16_bytes | Low-level string exporter for numbers. |
atoi32_unsafe⚠ | Unsafe, C-like importer for signed numbers. |
atoi32_bytes | Low-level string exporter for numbers. |
atoi64_unsafe⚠ | Unsafe, C-like importer for signed numbers. |
atoi64_bytes | Low-level string exporter for numbers. |
atoisize_bytes | Low-level string exporter for numbers. |
atoisize_unsafe⚠ | Unsafe, C-like importer for signed numbers. |
atou8_unsafe⚠ | Unsafe, C-like importer for unsigned numbers. |
atou8_bytes | Low-level string exporter for numbers. |
atou16_unsafe⚠ | Unsafe, C-like importer for unsigned numbers. |
atou16_bytes | Low-level string exporter for numbers. |
atou32_unsafe⚠ | Unsafe, C-like importer for unsigned numbers. |
atou32_bytes | Low-level string exporter for numbers. |
atou64_unsafe⚠ | Unsafe, C-like importer for unsigned numbers. |
atou64_bytes | Low-level string exporter for numbers. |
atousize_bytes | Low-level string exporter for numbers. |
atousize_unsafe⚠ | Unsafe, C-like importer for unsigned numbers. |
try_atoi8_bytes | Low-level string exporter for numbers. |
try_atoi16_bytes | Low-level string exporter for numbers. |
try_atoi32_bytes | Low-level string exporter for numbers. |
try_atoi64_bytes | Low-level string exporter for numbers. |
try_atoisize_bytes | Low-level string exporter for numbers. |
try_atou8_bytes | Low-level string exporter for numbers. |
try_atou16_bytes | Low-level string exporter for numbers. |
try_atou32_bytes | Low-level string exporter for numbers. |
try_atou64_bytes | Low-level string exporter for numbers. |
try_atousize_bytes | Low-level string exporter for numbers. |