Skip to content

Conversation

GuillaumeGomez
Copy link
Member

Results are not very impressive though:

bench name current new diff
bench_i128 17.74 ns/iter (+/- 0.02) 17.5 ns/iter (+/- 0.24) -1.4%
bench_i128_max 38.81 ns/iter (+/- 0.05) 37.65 ns/iter (+/- 0.51) -3.0%
bench_i128_min 38.85 ns/iter (+/- 0.06) 37.47 ns/iter (+/- 0.75) -3.6%
bench_i16 17.61 ns/iter (+/- 0.02) 17.55 ns/iter (+/- 0.64) -0.3%
bench_i16_max 18.1 ns/iter (+/- 0.03) 18.07 ns/iter (+/- 0.46) -0.2%
bench_i16_min 18.47 ns/iter (+/- 0.15) 18.34 ns/iter (+/- 0.47) -0.7%
bench_i32 17.56 ns/iter (+/- 0.48) 17.64 ns/iter (+/- 0.06) 0.5%
bench_i32_max 21.04 ns/iter (+/- 0.12) 21.04 ns/iter (+/- 0.14) 0.0%
bench_i32_min 21.3 ns/iter (+/- 0.7) 21.12 ns/iter (+/- 0.06) -0.8%
bench_i64 17.61 ns/iter (+/- 0.07) 17.54 ns/iter (+/- 0.06) -0.4%
bench_i64_max 24.7 ns/iter (+/- 0.04) 24.72 ns/iter (+/- 0.29) 0.1%
bench_i64_min 25.28 ns/iter (+/- 0.04) 25.28 ns/iter (+/- 0.03) 0.0%
bench_i8 17.67 ns/iter (+/- 0.05) 17.62 ns/iter (+/- 0.02) -0.3%
bench_i8_max 17.63 ns/iter (+/- 0.09) 17.52 ns/iter (+/- 0.3) -0.6%
bench_i8_min 17.91 ns/iter (+/- 0.03) 17.79 ns/iter (+/- 0.06) -0.7%
bench_isize 17.62 ns/iter (+/- 0.07) 17.58 ns/iter (+/- 0.05) -0.2%
bench_isize_max 24.71 ns/iter (+/- 0.03) 24.72 ns/iter (+/- 0.03) 0.0%
bench_isize_min 25.28 ns/iter (+/- 0.04) 25.29 ns/iter (+/- 0.05) 0.0%
bench_u128 16.36 ns/iter (+/- 0.02) 16.05 ns/iter (+/- 0.03) -1.9%
bench_u128_max 38.97 ns/iter (+/- 0.25) 37.08 ns/iter (+/- 0.06) -4.8%
bench_u128_min 14.51 ns/iter (+/- 0.18) 13.8 ns/iter (+/- 0.27) -4.9%
bench_u16 14.73 ns/iter (+/- 0.27) 15.18 ns/iter (+/- 0.03) 3.1%
bench_u16_max 14.96 ns/iter (+/- 0.02) 14.97 ns/iter (+/- 0.05) 0.1%
bench_u16_min 14.78 ns/iter (+/- 0.24) 15.02 ns/iter (+/- 0.13) 1.6%
bench_u32 14.64 ns/iter (+/- 0.27) 14.66 ns/iter (+/- 0.11) 0.1%
bench_u32_max 17.5 ns/iter (+/- 0.69) 17.81 ns/iter (+/- 0.31) 1.8%
bench_u32_min 14.67 ns/iter (+/- 0.11) 15.01 ns/iter (+/- 0.11) 2.3%
bench_u64 15.01 ns/iter (+/- 0.03) 14.96 ns/iter (+/- 0.16) -0.3%
bench_u64_max 21.83 ns/iter (+/- 0.03) 21.84 ns/iter (+/- 0.17) 0.0%
bench_u64_min 14.63 ns/iter (+/- 0.04) 14.62 ns/iter (+/- 0.01) -0.1%
bench_u8 14.41 ns/iter (+/- 0.04) 14.53 ns/iter (+/- 0.34) 0.8%
bench_u8_max 14.7 ns/iter (+/- 0.07) 14.58 ns/iter (+/- 0.12) -0.8%
bench_u8_min 13.8 ns/iter (+/- 0.25) 14.43 ns/iter (+/- 0.31) 4.6%
bench_usize 14.8 ns/iter (+/- 0.04) 14.81 ns/iter (+/- 0.1) 0.1%
bench_usize_max 21.86 ns/iter (+/- 0.02) 21.83 ns/iter (+/- 0.02) -0.1%
bench_usize_min 14.62 ns/iter (+/- 0.19) 15.52 ns/iter (+/- 0.23) 6.2%
Benchmark code
#![feature(test)]

extern crate test;

use test::{Bencher, black_box};

#[inline(always)]
fn convert_to_string<T: ToString>(n: T) -> String {
    n.to_string()
}

macro_rules! decl_benches {
    ($($name:ident $name_min:ident $name_max:ident: $ty:ident,)+) => {
        $(
            #[bench]
            fn $name(c: &mut Bencher) {
                c.iter(|| convert_to_string(black_box({ let nb: $ty = 20; nb })));
            }
            #[bench]
            fn $name_min(c: &mut Bencher) {
                c.iter(|| convert_to_string(black_box({ let nb: $ty = $ty::MIN; nb })));
            }
            #[bench]
            fn $name_max(c: &mut Bencher) {
                c.iter(|| convert_to_string(black_box({ let nb: $ty = $ty::MAX; nb })));
            }
        )+
    }
}

decl_benches! {
    bench_u8 bench_u8_min bench_u8_max: u8,
    bench_i8 bench_i8_min bench_i8_max: i8,
    bench_u16 bench_u16_min bench_u16_max: u16,
    bench_i16 bench_i16_min bench_i16_max: i16,
    bench_u32 bench_u32_min bench_u32_max: u32,
    bench_i32 bench_i32_min bench_i32_max: i32,
    bench_u64 bench_u64_min bench_u64_max: u64,
    bench_i64 bench_i64_min bench_i64_max: i64,
    bench_u128 bench_u128_min bench_u128_max: u128,
    bench_i128 bench_i128_min bench_i128_max: i128,
    bench_usize bench_usize_min bench_usize_max: usize,
    bench_isize bench_isize_min bench_isize_max: isize,
}

And there is no difference in the generated asm, so opening it and closing it right away to be able to link to it.

r? ghost

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-libs Relevant to the library team, which will review and decide on the PR/issue. labels Jul 1, 2025
@GuillaumeGomez GuillaumeGomez deleted the get-unchecked branch July 1, 2025 11:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-libs Relevant to the library team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants