Skip to content

Commit 8439f76

Browse files
committed
Fixed and improved benchmarks
1 parent e569819 commit 8439f76

File tree

2 files changed

+23
-9
lines changed

2 files changed

+23
-9
lines changed

benches/context.rs

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,11 @@ fn resume_reference_perf(b: &mut Bencher) {
2323
test::black_box(t)
2424
}
2525

26-
b.iter(|| yielder(unsafe { Transfer::empty(0) }));
26+
let mut t: Transfer = unsafe { mem::uninitialized() };
27+
28+
b.iter(|| unsafe {
29+
t = yielder(mem::transmute_copy::<_, Transfer>(&t));
30+
});
2731
}
2832

2933
#[bench]
@@ -37,7 +41,9 @@ fn resume(b: &mut Bencher) {
3741
let stack = FixedSizeStack::default();
3842
let mut t = Transfer::new(Context::new(&stack, yielder), 0);
3943

40-
b.iter(|| unsafe { t = mem::replace(&mut t, mem::uninitialized()).context.resume(0) });
44+
b.iter(|| unsafe {
45+
t = mem::transmute_copy::<_, Transfer>(&t).context.resume(0);
46+
});
4147
}
4248

4349
#[bench]
@@ -48,11 +54,14 @@ fn resume_ontop(b: &mut Bencher) {
4854
}
4955
}
5056

51-
extern "C" fn ontop_function(mut t: Transfer) -> Transfer {
57+
extern "C" fn ontop_function(t: Transfer) -> Transfer {
5258
t
5359
}
5460

5561
let stack = FixedSizeStack::default();
5662
let mut t = Transfer::new(Context::new(&stack, yielder), 0);
57-
b.iter(|| unsafe { t = mem::replace(&mut t, mem::uninitialized()).context.resume_ontop(0, ontop_function) });
63+
64+
b.iter(|| unsafe {
65+
t = mem::transmute_copy::<_, Transfer>(&t).context.resume_ontop(0, ontop_function);
66+
});
5867
}

benches/stack.rs

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,20 @@
1010
extern crate context;
1111
extern crate test;
1212

13-
use context::stack::{Stack, FixedSizeStack};
13+
use context::stack::{Stack, FixedSizeStack, ProtectedFixedSizeStack};
1414
use test::Bencher;
1515

1616
#[bench]
17-
fn stack_alloc(b: &mut Bencher) {
18-
b.iter(|| FixedSizeStack::default());
17+
fn stack_alloc_reference_perf(b: &mut Bencher) {
18+
b.iter(|| test::black_box(Vec::<u8>::with_capacity(Stack::default_size())));
1919
}
2020

2121
#[bench]
22-
fn regular_alloc(b: &mut Bencher) {
23-
b.iter(|| Vec::<u8>::with_capacity(Stack::default_size()));
22+
fn stack_alloc_fixed(b: &mut Bencher) {
23+
b.iter(|| test::black_box(FixedSizeStack::default()));
24+
}
25+
26+
#[bench]
27+
fn stack_alloc_protected_fixed(b: &mut Bencher) {
28+
b.iter(|| test::black_box(ProtectedFixedSizeStack::default()));
2429
}

0 commit comments

Comments
 (0)