File tree Expand file tree Collapse file tree 1 file changed +92
-0
lines changed Expand file tree Collapse file tree 1 file changed +92
-0
lines changed Original file line number Diff line number Diff line change @@ -140,3 +140,95 @@ fn fmt_write(b: &mut Bencher) {
140140 unsafe { buf. set_len ( 0 ) ; }
141141 } )
142142}
143+
144+ // BufMut for BytesMut vs Vec<u8>
145+
146+ #[ bench]
147+ fn put_bytes_mut ( b : & mut Bencher ) {
148+ let mut buf = BytesMut :: with_capacity ( 256 ) ;
149+ let data = [ 33u8 ; 32 ] ;
150+
151+ b. bytes = data. len ( ) as u64 * 4 ;
152+ b. iter ( || {
153+ for _ in 0 ..4 {
154+ buf. put_slice ( & data) ;
155+ }
156+ test:: black_box ( & buf) ;
157+ unsafe { buf. set_len ( 0 ) ; }
158+ } ) ;
159+ }
160+
161+ #[ bench]
162+ fn put_u8_bytes_mut ( b : & mut Bencher ) {
163+ let mut buf = BytesMut :: with_capacity ( 256 ) ;
164+ let cnt = 128 ;
165+
166+ b. bytes = cnt as u64 ;
167+ b. iter ( || {
168+ for _ in 0 ..cnt {
169+ buf. put_u8 ( b'x' ) ;
170+ }
171+ test:: black_box ( & buf) ;
172+ unsafe { buf. set_len ( 0 ) ; }
173+ } ) ;
174+ }
175+
176+ #[ bench]
177+ fn put_vec ( b : & mut Bencher ) {
178+ let mut buf = Vec :: < u8 > :: with_capacity ( 256 ) ;
179+ let data = [ 33u8 ; 32 ] ;
180+
181+ b. bytes = data. len ( ) as u64 * 4 ;
182+ b. iter ( || {
183+ for _ in 0 ..4 {
184+ buf. put_slice ( & data) ;
185+ }
186+ test:: black_box ( & buf) ;
187+ unsafe { buf. set_len ( 0 ) ; }
188+ } ) ;
189+ }
190+
191+ #[ bench]
192+ fn put_u8_vec ( b : & mut Bencher ) {
193+ let mut buf = Vec :: < u8 > :: with_capacity ( 256 ) ;
194+ let cnt = 128 ;
195+
196+ b. bytes = cnt as u64 ;
197+ b. iter ( || {
198+ for _ in 0 ..cnt {
199+ buf. put_u8 ( b'x' ) ;
200+ }
201+ test:: black_box ( & buf) ;
202+ unsafe { buf. set_len ( 0 ) ; }
203+ } ) ;
204+ }
205+
206+ #[ bench]
207+ fn put_vec_extend ( b : & mut Bencher ) {
208+ let mut buf = Vec :: < u8 > :: with_capacity ( 256 ) ;
209+ let data = [ 33u8 ; 32 ] ;
210+
211+ b. bytes = data. len ( ) as u64 * 4 ;
212+ b. iter ( || {
213+ for _ in 0 ..4 {
214+ buf. extend_from_slice ( & data) ;
215+ }
216+ test:: black_box ( & buf) ;
217+ unsafe { buf. set_len ( 0 ) ; }
218+ } ) ;
219+ }
220+
221+ #[ bench]
222+ fn put_u8_vec_push ( b : & mut Bencher ) {
223+ let mut buf = Vec :: < u8 > :: with_capacity ( 256 ) ;
224+ let cnt = 128 ;
225+
226+ b. bytes = cnt as u64 ;
227+ b. iter ( || {
228+ for _ in 0 ..cnt {
229+ buf. push ( b'x' ) ;
230+ }
231+ test:: black_box ( & buf) ;
232+ unsafe { buf. set_len ( 0 ) ; }
233+ } ) ;
234+ }
You can’t perform that action at this time.
0 commit comments