]> git.lizzy.rs Git - rust.git/blob - src/librustc/benches/dispatch.rs
Auto merge of #56951 - oli-obk:auto_toolstate_issue, r=kennytm
[rust.git] / src / librustc / benches / dispatch.rs
1 use test::Bencher;
2
3 // Static/dynamic method dispatch
4
5 struct Struct {
6     field: isize
7 }
8
9 trait Trait {
10     fn method(&self) -> isize;
11 }
12
13 impl Trait for Struct {
14     fn method(&self) -> isize {
15         self.field
16     }
17 }
18
19 #[bench]
20 fn trait_vtable_method_call(b: &mut Bencher) {
21     let s = Struct { field: 10 };
22     let t = &s as &Trait;
23     b.iter(|| {
24         t.method()
25     });
26 }
27
28 #[bench]
29 fn trait_static_method_call(b: &mut Bencher) {
30     let s = Struct { field: 10 };
31     b.iter(|| {
32         s.method()
33     });
34 }