File tree Expand file tree Collapse file tree 2 files changed +23
-9
lines changed
Expand file tree Collapse file tree 2 files changed +23
-9
lines changed Original file line number Diff line number Diff 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}
Original file line number Diff line number Diff line change 1010extern crate context;
1111extern crate test;
1212
13- use context:: stack:: { Stack , FixedSizeStack } ;
13+ use context:: stack:: { Stack , FixedSizeStack , ProtectedFixedSizeStack } ;
1414use 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}
You can’t perform that action at this time.
0 commit comments