@@ -31,11 +31,7 @@ pub fn criterion_benchmark(c: &mut Criterion) {
31
31
}
32
32
group. bench_function ( "Rust" , |b| {
33
33
b. iter ( || {
34
- let interp = interp:: Interp :: new (
35
- black_box ( 49 ) ,
36
- black_box ( data_out. len ( ) / data. len ( ) ) ,
37
- black_box ( 2 ) ,
38
- ) ;
34
+ let interp = interp:: Interp2F :: < [ f32 ; 4 ] > :: new ( ) ;
39
35
drop ( black_box ( interp) ) ;
40
36
} )
41
37
} ) ;
@@ -59,14 +55,16 @@ pub fn criterion_benchmark(c: &mut Criterion) {
59
55
interp:: interp_destroy_c ( interp) ;
60
56
}
61
57
{
62
- let mut interp = interp:: Interp :: new (
63
- black_box ( 49 ) ,
64
- black_box ( data_out. len ( ) / data. len ( ) ) ,
65
- black_box ( 2 ) ,
66
- ) ;
58
+ let mut interp = interp:: Interp2F :: new ( ) ;
59
+ let ( _, data, _) = unsafe { data. align_to :: < [ f32 ; 2 ] > ( ) } ;
60
+ let ( _, data_out, _) = unsafe { data_out. align_to_mut :: < [ f32 ; 2 ] > ( ) } ;
67
61
group. bench_function ( "Rust" , |b| {
68
62
b. iter ( || {
69
- interp. process ( & data, & mut data_out) ;
63
+ for ( input_frame, output_frames) in
64
+ Iterator :: zip ( data. iter ( ) , data_out. chunks_exact_mut ( 2 ) )
65
+ {
66
+ output_frames. copy_from_slice ( & interp. push ( * input_frame) ) ;
67
+ }
70
68
} )
71
69
} ) ;
72
70
}
@@ -91,14 +89,16 @@ pub fn criterion_benchmark(c: &mut Criterion) {
91
89
interp:: interp_destroy_c ( interp) ;
92
90
}
93
91
{
94
- let mut interp = interp:: Interp :: new (
95
- black_box ( 49 ) ,
96
- black_box ( data_out. len ( ) / data. len ( ) ) ,
97
- black_box ( 2 ) ,
98
- ) ;
92
+ let mut interp = interp:: Interp4F :: new ( ) ;
93
+ let ( _, data, _) = unsafe { data. align_to :: < [ f32 ; 2 ] > ( ) } ;
94
+ let ( _, data_out, _) = unsafe { data_out. align_to_mut :: < [ f32 ; 2 ] > ( ) } ;
99
95
group. bench_function ( "Rust" , |b| {
100
96
b. iter ( || {
101
- interp. process ( & data, & mut data_out) ;
97
+ for ( input_frame, output_frames) in
98
+ Iterator :: zip ( data. iter ( ) , data_out. chunks_exact_mut ( 4 ) )
99
+ {
100
+ output_frames. copy_from_slice ( & interp. push ( * input_frame) ) ;
101
+ }
102
102
} )
103
103
} ) ;
104
104
}
0 commit comments