From 698f8c2f01ea549d77d7dc3338a12e04c11057b9 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 17 Apr 2024 14:02:58 +0200 Subject: Adding upstream version 1.64.0+dfsg1. Signed-off-by: Daniel Baumann --- compiler/rustc_middle/benches/lib.rs | 54 ++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 compiler/rustc_middle/benches/lib.rs (limited to 'compiler/rustc_middle/benches/lib.rs') diff --git a/compiler/rustc_middle/benches/lib.rs b/compiler/rustc_middle/benches/lib.rs new file mode 100644 index 000000000..237751bcb --- /dev/null +++ b/compiler/rustc_middle/benches/lib.rs @@ -0,0 +1,54 @@ +#![feature(test)] + +extern crate test; + +use test::Bencher; + +// Static/dynamic method dispatch + +struct Struct { + field: isize, +} + +trait Trait { + fn method(&self) -> isize; +} + +impl Trait for Struct { + fn method(&self) -> isize { + self.field + } +} + +#[bench] +fn trait_vtable_method_call(b: &mut Bencher) { + let s = Struct { field: 10 }; + let t = &s as &dyn Trait; + b.iter(|| t.method()); +} + +#[bench] +fn trait_static_method_call(b: &mut Bencher) { + let s = Struct { field: 10 }; + b.iter(|| s.method()); +} + +// Overhead of various match forms + +#[bench] +fn option_some(b: &mut Bencher) { + let x = Some(10); + b.iter(|| match x { + Some(y) => y, + None => 11, + }); +} + +#[bench] +fn vec_pattern(b: &mut Bencher) { + let x = [1, 2, 3, 4, 5, 6]; + b.iter(|| match x { + [1, 2, 3, ..] => 10, + _ => 11, + }); +} -- cgit v1.2.3