@@ -6,45 +6,45 @@ use test::{black_box, Bencher};
6
6
extern crate compiler_builtins;
7
7
use compiler_builtins:: mem:: { memcmp, memcpy, memmove, memset} ;
8
8
9
- fn memcpy_builtin ( b : & mut Bencher , n : usize ) {
10
- let v1 = vec ! [ 1u8 ; n] ;
11
- let mut v2 = vec ! [ 0u8 ; n] ;
9
+ fn memcpy_builtin ( b : & mut Bencher , n : usize , offset : usize ) {
10
+ let v1 = vec ! [ 1u8 ; n + offset ] ;
11
+ let mut v2 = vec ! [ 0u8 ; n + offset ] ;
12
12
b. bytes = n as u64 ;
13
13
b. iter ( || {
14
- let src: & [ u8 ] = black_box ( & v1) ;
15
- let dst: & mut [ u8 ] = black_box ( & mut v2) ;
14
+ let src: & [ u8 ] = black_box ( & v1[ offset.. ] ) ;
15
+ let dst: & mut [ u8 ] = black_box ( & mut v2[ offset.. ] ) ;
16
16
dst. copy_from_slice ( src) ;
17
17
} )
18
18
}
19
19
20
- fn memcpy_rust ( b : & mut Bencher , n : usize ) {
21
- let v1 = vec ! [ 1u8 ; n] ;
22
- let mut v2 = vec ! [ 0u8 ; n] ;
20
+ fn memcpy_rust ( b : & mut Bencher , n : usize , offset : usize ) {
21
+ let v1 = vec ! [ 1u8 ; n + offset ] ;
22
+ let mut v2 = vec ! [ 0u8 ; n + offset ] ;
23
23
b. bytes = n as u64 ;
24
24
b. iter ( || {
25
- let src: & [ u8 ] = black_box ( & v1) ;
26
- let dst: & mut [ u8 ] = black_box ( & mut v2) ;
25
+ let src: & [ u8 ] = black_box ( & v1[ offset.. ] ) ;
26
+ let dst: & mut [ u8 ] = black_box ( & mut v2[ offset.. ] ) ;
27
27
unsafe { memcpy ( dst. as_mut_ptr ( ) , src. as_ptr ( ) , n) }
28
28
} )
29
29
}
30
30
31
- fn memset_builtin ( b : & mut Bencher , n : usize ) {
32
- let mut v1 = vec ! [ 0u8 ; n] ;
31
+ fn memset_builtin ( b : & mut Bencher , n : usize , offset : usize ) {
32
+ let mut v1 = vec ! [ 0u8 ; n + offset ] ;
33
33
b. bytes = n as u64 ;
34
34
b. iter ( || {
35
- let dst: & mut [ u8 ] = black_box ( & mut v1) ;
35
+ let dst: & mut [ u8 ] = black_box ( & mut v1[ offset.. ] ) ;
36
36
let val: u8 = black_box ( 27 ) ;
37
37
for b in dst {
38
38
* b = val;
39
39
}
40
40
} )
41
41
}
42
42
43
- fn memset_rust ( b : & mut Bencher , n : usize ) {
44
- let mut v1 = vec ! [ 0u8 ; n] ;
43
+ fn memset_rust ( b : & mut Bencher , n : usize , offset : usize ) {
44
+ let mut v1 = vec ! [ 0u8 ; n + offset ] ;
45
45
b. bytes = n as u64 ;
46
46
b. iter ( || {
47
- let dst: & mut [ u8 ] = black_box ( & mut v1) ;
47
+ let dst: & mut [ u8 ] = black_box ( & mut v1[ offset.. ] ) ;
48
48
let val = black_box ( 27 ) ;
49
49
unsafe { memset ( dst. as_mut_ptr ( ) , val, n) }
50
50
} )
@@ -95,36 +95,68 @@ fn memmove_rust(b: &mut Bencher, n: usize) {
95
95
96
96
#[ bench]
97
97
fn memcpy_builtin_4096 ( b : & mut Bencher ) {
98
- memcpy_builtin ( b, 4096 )
98
+ memcpy_builtin ( b, 4096 , 0 )
99
99
}
100
100
#[ bench]
101
101
fn memcpy_rust_4096 ( b : & mut Bencher ) {
102
- memcpy_rust ( b, 4096 )
102
+ memcpy_rust ( b, 4096 , 0 )
103
103
}
104
104
#[ bench]
105
105
fn memcpy_builtin_1048576 ( b : & mut Bencher ) {
106
- memcpy_builtin ( b, 1048576 )
106
+ memcpy_builtin ( b, 1048576 , 0 )
107
107
}
108
108
#[ bench]
109
109
fn memcpy_rust_1048576 ( b : & mut Bencher ) {
110
- memcpy_rust ( b, 1048576 )
110
+ memcpy_rust ( b, 1048576 , 0 )
111
+ }
112
+ #[ bench]
113
+ fn memcpy_builtin_4096_offset ( b : & mut Bencher ) {
114
+ memcpy_builtin ( b, 4096 , 65 )
115
+ }
116
+ #[ bench]
117
+ fn memcpy_rust_4096_offset ( b : & mut Bencher ) {
118
+ memcpy_rust ( b, 4096 , 65 )
119
+ }
120
+ #[ bench]
121
+ fn memcpy_builtin_1048576_offset ( b : & mut Bencher ) {
122
+ memcpy_builtin ( b, 1048576 , 65 )
123
+ }
124
+ #[ bench]
125
+ fn memcpy_rust_1048576_offset ( b : & mut Bencher ) {
126
+ memcpy_rust ( b, 1048576 , 65 )
111
127
}
112
128
113
129
#[ bench]
114
130
fn memset_builtin_4096 ( b : & mut Bencher ) {
115
- memset_builtin ( b, 4096 )
131
+ memset_builtin ( b, 4096 , 0 )
116
132
}
117
133
#[ bench]
118
134
fn memset_rust_4096 ( b : & mut Bencher ) {
119
- memset_rust ( b, 4096 )
135
+ memset_rust ( b, 4096 , 0 )
120
136
}
121
137
#[ bench]
122
138
fn memset_builtin_1048576 ( b : & mut Bencher ) {
123
- memset_builtin ( b, 1048576 )
139
+ memset_builtin ( b, 1048576 , 0 )
124
140
}
125
141
#[ bench]
126
142
fn memset_rust_1048576 ( b : & mut Bencher ) {
127
- memset_rust ( b, 1048576 )
143
+ memset_rust ( b, 1048576 , 0 )
144
+ }
145
+ #[ bench]
146
+ fn memset_builtin_4096_offset ( b : & mut Bencher ) {
147
+ memset_builtin ( b, 4096 , 65 )
148
+ }
149
+ #[ bench]
150
+ fn memset_rust_4096_offset ( b : & mut Bencher ) {
151
+ memset_rust ( b, 4096 , 65 )
152
+ }
153
+ #[ bench]
154
+ fn memset_builtin_1048576_offset ( b : & mut Bencher ) {
155
+ memset_builtin ( b, 1048576 , 65 )
156
+ }
157
+ #[ bench]
158
+ fn memset_rust_1048576_offset ( b : & mut Bencher ) {
159
+ memset_rust ( b, 1048576 , 65 )
128
160
}
129
161
130
162
#[ bench]
0 commit comments