[−][src]Module lexical::itoa
Fast lexical integer-to-string 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, itoa::write()
or x.to_string()
,
avoiding any inefficiencies in Rust string parsing for format!(...)
or write!()
macros. 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/itoa.rs
.
Benchmarks
Type | lexical (ns/iter) | to_string (ns/iter) | Relative Increase |
---|---|---|---|
u8 | 233,850 | 521,612 | 2.25x |
u16 | 263,126 | 513,183 | 2.13x |
u32 | 266,256 | 529,319 | 1.72x |
u64 | 335,878 | 645,835 | 1.47x |
i8 | 264,393 | 710,683 | 2.80x |
i16 | 277,071 | 709,717 | 2.48x |
i32 | 313,994 | 784,850 | 2.12x |
i64 | 335,098 | 825,617 | 1.99x |
Raw Benchmarks
test i8_itoa ... bench: 290,879 ns/iter (+/- 20,785)
test i8_lexical ... bench: 264,393 ns/iter (+/- 13,174)
test i8_to_string ... bench: 710,683 ns/iter (+/- 29,733)
test i16_itoa ... bench: 291,568 ns/iter (+/- 17,685)
test i16_lexical ... bench: 277,071 ns/iter (+/- 12,155)
test i16_to_string ... bench: 709,717 ns/iter (+/- 36,272)
test i32_itoa ... bench: 315,750 ns/iter (+/- 17,166)
test i32_lexical ... bench: 313,994 ns/iter (+/- 24,824)
test i32_to_string ... bench: 784,850 ns/iter (+/- 60,596)
test i64_itoa ... bench: 339,346 ns/iter (+/- 25,263)
test i64_lexical ... bench: 335,098 ns/iter (+/- 16,897)
test i64_to_string ... bench: 825,617 ns/iter (+/- 27,940)
test u8_itoa ... bench: 278,985 ns/iter (+/- 22,038)
test u8_lexical ... bench: 233,850 ns/iter (+/- 8,531)
test u8_to_string ... bench: 521,612 ns/iter (+/- 30,309)
test u16_itoa ... bench: 288,058 ns/iter (+/- 57,947)
test u16_lexical ... bench: 263,126 ns/iter (+/- 104,268)
test u16_to_string ... bench: 513,183 ns/iter (+/- 27,565)
test u32_itoa ... bench: 271,674 ns/iter (+/- 6,385)
test u32_lexical ... bench: 266,256 ns/iter (+/- 116,874)
test u32_to_string ... bench: 529,319 ns/iter (+/- 109,369)
test u64_itoa ... bench: 360,856 ns/iter (+/- 131,510)
test u64_lexical ... bench: 335,878 ns/iter (+/- 75,110)
test u64_to_string ... bench: 645,835 ns/iter (+/- 93,398)
Raw Benchmarks (no_std
)
test i8_itoa ... bench: 595,005 ns/iter (+/- 36,626)
test i8_lexical ... bench: 561,319 ns/iter (+/- 17,670)
test i8_to_string ... bench: 1,123,246 ns/iter (+/- 41,451)
test i16_itoa ... bench: 602,613 ns/iter (+/- 31,383)
test i16_lexical ... bench: 597,835 ns/iter (+/- 18,976)
test i16_to_string ... bench: 1,162,493 ns/iter (+/- 61,947)
test i32_itoa ... bench: 643,928 ns/iter (+/- 48,297)
test i32_lexical ... bench: 625,825 ns/iter (+/- 127,002)
test i32_to_string ... bench: 1,199,091 ns/iter (+/- 220,981)
test i64_itoa ... bench: 670,835 ns/iter (+/- 75,959)
test i64_lexical ... bench: 688,899 ns/iter (+/- 99,429)
test i64_to_string ... bench: 1,239,407 ns/iter (+/- 157,723)
test u8_itoa ... bench: 585,364 ns/iter (+/- 29,233)
test u8_lexical ... bench: 562,703 ns/iter (+/- 32,110)
test u8_to_string ... bench: 826,371 ns/iter (+/- 39,158)
test u16_itoa ... bench: 589,813 ns/iter (+/- 23,505)
test u16_lexical ... bench: 584,662 ns/iter (+/- 36,987)
test u16_to_string ... bench: 823,388 ns/iter (+/- 43,951)
test u32_itoa ... bench: 622,236 ns/iter (+/- 11,931)
test u32_lexical ... bench: 603,591 ns/iter (+/- 15,666)
test u32_to_string ... bench: 840,490 ns/iter (+/- 41,951)
test u64_itoa ... bench: 664,002 ns/iter (+/- 29,050)
test u64_lexical ... bench: 664,414 ns/iter (+/- 29,542)
test u64_to_string ... bench: 914,314 ns/iter (+/- 51,479)
Functions
i8toa_unsafe⚠ | Unsafe, C-like exporter for signed numbers. |
i8toa_bytes | Low-level string exporter for numbers. |
i16toa_unsafe⚠ | Unsafe, C-like exporter for signed numbers. |
i16toa_bytes | Low-level string exporter for numbers. |
i32toa_unsafe⚠ | Unsafe, C-like exporter for signed numbers. |
i32toa_bytes | Low-level string exporter for numbers. |
i64toa_unsafe⚠ | Unsafe, C-like exporter for signed numbers. |
i64toa_bytes | Low-level string exporter for numbers. |
isizetoa_bytes | Low-level string exporter for numbers. |
isizetoa_unsafe⚠ | Unsafe, C-like exporter for signed numbers. |
u8toa_unsafe⚠ | Unsafe, C-like exporter for unsigned numbers. |
u8toa_bytes | Low-level string exporter for numbers. |
u16toa_unsafe⚠ | Unsafe, C-like exporter for unsigned numbers. |
u16toa_bytes | Low-level string exporter for numbers. |
u32toa_unsafe⚠ | Unsafe, C-like exporter for unsigned numbers. |
u32toa_bytes | Low-level string exporter for numbers. |
u64toa_unsafe⚠ | Unsafe, C-like exporter for unsigned numbers. |
u64toa_bytes | Low-level string exporter for numbers. |
usizetoa_bytes | Low-level string exporter for numbers. |
usizetoa_unsafe⚠ | Unsafe, C-like exporter for unsigned numbers. |