[][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_string

Low-level string exporter for numbers.

i16toa_unsafe

Unsafe, C-like exporter for signed numbers.

i16toa_string

Low-level string exporter for numbers.

i32toa_unsafe

Unsafe, C-like exporter for signed numbers.

i32toa_string

Low-level string exporter for numbers.

i64toa_unsafe

Unsafe, C-like exporter for signed numbers.

i64toa_string

Low-level string exporter for numbers.

isizetoa_string

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_string

Low-level string exporter for numbers.

u16toa_unsafe

Unsafe, C-like exporter for unsigned numbers.

u16toa_string

Low-level string exporter for numbers.

u32toa_unsafe

Unsafe, C-like exporter for unsigned numbers.

u32toa_string

Low-level string exporter for numbers.

u64toa_unsafe

Unsafe, C-like exporter for unsigned numbers.

u64toa_string

Low-level string exporter for numbers.

usizetoa_string

Low-level string exporter for numbers.

usizetoa_unsafe

Unsafe, C-like exporter for unsigned numbers.