1
1
use std:: { mem, ptr} ;
2
2
3
+ use rand:: distributions:: { Alphanumeric , Standard } ;
3
4
use rand:: { thread_rng, Rng , SeedableRng } ;
4
- use rand:: distributions:: { Standard , Alphanumeric } ;
5
5
use rand_xorshift:: XorShiftRng ;
6
- use test:: { Bencher , black_box } ;
6
+ use test:: { black_box , Bencher } ;
7
7
8
8
#[ bench]
9
9
fn iterator ( b : & mut Bencher ) {
@@ -239,7 +239,7 @@ macro_rules! sort {
239
239
b. iter( || v. clone( ) . $f( ) ) ;
240
240
b. bytes = $len * mem:: size_of_val( & $gen( 1 ) [ 0 ] ) as u64 ;
241
241
}
242
- }
242
+ } ;
243
243
}
244
244
245
245
macro_rules! sort_strings {
@@ -251,7 +251,7 @@ macro_rules! sort_strings {
251
251
b. iter( || v. clone( ) . $f( ) ) ;
252
252
b. bytes = $len * mem:: size_of:: <& str >( ) as u64 ;
253
253
}
254
- }
254
+ } ;
255
255
}
256
256
257
257
macro_rules! sort_expensive {
@@ -273,7 +273,7 @@ macro_rules! sort_expensive {
273
273
} ) ;
274
274
b. bytes = $len * mem:: size_of_val( & $gen( 1 ) [ 0 ] ) as u64 ;
275
275
}
276
- }
276
+ } ;
277
277
}
278
278
279
279
macro_rules! sort_lexicographic {
@@ -284,7 +284,7 @@ macro_rules! sort_lexicographic {
284
284
b. iter( || v. clone( ) . $f( |x| x. to_string( ) ) ) ;
285
285
b. bytes = $len * mem:: size_of_val( & $gen( 1 ) [ 0 ] ) as u64 ;
286
286
}
287
- }
287
+ } ;
288
288
}
289
289
290
290
sort ! ( sort, sort_small_ascending, gen_ascending, 10 ) ;
@@ -325,57 +325,58 @@ macro_rules! reverse {
325
325
fn $name( b: & mut Bencher ) {
326
326
// odd length and offset by 1 to be as unaligned as possible
327
327
let n = 0xFFFFF ;
328
- let mut v: Vec <_> =
329
- ( 0 ..1 +( n / mem:: size_of:: <$ty>( ) as u64 ) )
330
- . map( $f)
331
- . collect( ) ;
328
+ let mut v: Vec <_> = ( 0 ..1 + ( n / mem:: size_of:: <$ty>( ) as u64 ) ) . map( $f) . collect( ) ;
332
329
b. iter( || black_box( & mut v[ 1 ..] ) . reverse( ) ) ;
333
330
b. bytes = n;
334
331
}
335
- }
332
+ } ;
336
333
}
337
334
338
335
reverse ! ( reverse_u8, u8 , |x| x as u8 ) ;
339
336
reverse ! ( reverse_u16, u16 , |x| x as u16 ) ;
340
- reverse ! ( reverse_u8x3, [ u8 ; 3 ] , |x| [ x as u8 , ( x>> 8 ) as u8 , ( x>> 16 ) as u8 ] ) ;
337
+ reverse ! ( reverse_u8x3, [ u8 ; 3 ] , |x| [ x as u8 , ( x >> 8 ) as u8 , ( x >> 16 ) as u8 ] ) ;
341
338
reverse ! ( reverse_u32, u32 , |x| x as u32 ) ;
342
339
reverse ! ( reverse_u64, u64 , |x| x as u64 ) ;
343
340
reverse ! ( reverse_u128, u128 , |x| x as u128 ) ;
344
- #[ repr( simd) ] struct F64x4 ( f64 , f64 , f64 , f64 ) ;
345
- reverse ! ( reverse_simd_f64x4, F64x4 , |x| { let x = x as f64 ; F64x4 ( x, x, x, x) } ) ;
341
+ #[ repr( simd) ]
342
+ struct F64x4 ( f64 , f64 , f64 , f64 ) ;
343
+ reverse ! ( reverse_simd_f64x4, F64x4 , |x| {
344
+ let x = x as f64 ;
345
+ F64x4 ( x, x, x, x)
346
+ } ) ;
346
347
347
348
macro_rules! rotate {
348
349
( $name: ident, $gen: expr, $len: expr, $mid: expr) => {
349
350
#[ bench]
350
351
fn $name( b: & mut Bencher ) {
351
352
let size = mem:: size_of_val( & $gen( 1 ) [ 0 ] ) ;
352
353
let mut v = $gen( $len * 8 / size) ;
353
- b. iter( || black_box( & mut v) . rotate_left( ( $mid* 8 + size- 1 ) / size) ) ;
354
+ b. iter( || black_box( & mut v) . rotate_left( ( $mid * 8 + size - 1 ) / size) ) ;
354
355
b. bytes = ( v. len( ) * size) as u64 ;
355
356
}
356
- }
357
+ } ;
357
358
}
358
359
359
360
rotate ! ( rotate_tiny_by1, gen_random, 16 , 1 ) ;
360
- rotate ! ( rotate_tiny_half, gen_random, 16 , 16 / 2 ) ;
361
- rotate ! ( rotate_tiny_half_plus_one, gen_random, 16 , 16 / 2 + 1 ) ;
361
+ rotate ! ( rotate_tiny_half, gen_random, 16 , 16 / 2 ) ;
362
+ rotate ! ( rotate_tiny_half_plus_one, gen_random, 16 , 16 / 2 + 1 ) ;
362
363
363
364
rotate ! ( rotate_medium_by1, gen_random, 9158 , 1 ) ;
364
365
rotate ! ( rotate_medium_by727_u64, gen_random, 9158 , 727 ) ;
365
366
rotate ! ( rotate_medium_by727_bytes, gen_random_bytes, 9158 , 727 ) ;
366
367
rotate ! ( rotate_medium_by727_strings, gen_strings, 9158 , 727 ) ;
367
- rotate ! ( rotate_medium_half, gen_random, 9158 , 9158 / 2 ) ;
368
- rotate ! ( rotate_medium_half_plus_one, gen_random, 9158 , 9158 / 2 + 1 ) ;
368
+ rotate ! ( rotate_medium_half, gen_random, 9158 , 9158 / 2 ) ;
369
+ rotate ! ( rotate_medium_half_plus_one, gen_random, 9158 , 9158 / 2 + 1 ) ;
369
370
370
371
// Intended to use more RAM than the machine has cache
371
- rotate ! ( rotate_huge_by1, gen_random, 5 * 1024 * 1024 , 1 ) ;
372
- rotate ! ( rotate_huge_by9199_u64, gen_random, 5 * 1024 * 1024 , 9199 ) ;
373
- rotate ! ( rotate_huge_by9199_bytes, gen_random_bytes, 5 * 1024 * 1024 , 9199 ) ;
374
- rotate ! ( rotate_huge_by9199_strings, gen_strings, 5 * 1024 * 1024 , 9199 ) ;
375
- rotate ! ( rotate_huge_by9199_big, gen_big_random, 5 * 1024 * 1024 , 9199 ) ;
376
- rotate ! ( rotate_huge_by1234577_u64, gen_random, 5 * 1024 * 1024 , 1234577 ) ;
377
- rotate ! ( rotate_huge_by1234577_bytes, gen_random_bytes, 5 * 1024 * 1024 , 1234577 ) ;
378
- rotate ! ( rotate_huge_by1234577_strings, gen_strings, 5 * 1024 * 1024 , 1234577 ) ;
379
- rotate ! ( rotate_huge_by1234577_big, gen_big_random, 5 * 1024 * 1024 , 1234577 ) ;
380
- rotate ! ( rotate_huge_half, gen_random, 5 * 1024 * 1024 , 5 * 1024 * 1024 / 2 ) ;
381
- rotate ! ( rotate_huge_half_plus_one, gen_random, 5 * 1024 * 1024 , 5 * 1024 * 1024 / 2 + 1 ) ;
372
+ rotate ! ( rotate_huge_by1, gen_random, 5 * 1024 * 1024 , 1 ) ;
373
+ rotate ! ( rotate_huge_by9199_u64, gen_random, 5 * 1024 * 1024 , 9199 ) ;
374
+ rotate ! ( rotate_huge_by9199_bytes, gen_random_bytes, 5 * 1024 * 1024 , 9199 ) ;
375
+ rotate ! ( rotate_huge_by9199_strings, gen_strings, 5 * 1024 * 1024 , 9199 ) ;
376
+ rotate ! ( rotate_huge_by9199_big, gen_big_random, 5 * 1024 * 1024 , 9199 ) ;
377
+ rotate ! ( rotate_huge_by1234577_u64, gen_random, 5 * 1024 * 1024 , 1234577 ) ;
378
+ rotate ! ( rotate_huge_by1234577_bytes, gen_random_bytes, 5 * 1024 * 1024 , 1234577 ) ;
379
+ rotate ! ( rotate_huge_by1234577_strings, gen_strings, 5 * 1024 * 1024 , 1234577 ) ;
380
+ rotate ! ( rotate_huge_by1234577_big, gen_big_random, 5 * 1024 * 1024 , 1234577 ) ;
381
+ rotate ! ( rotate_huge_half, gen_random, 5 * 1024 * 1024 , 5 * 1024 * 1024 / 2 ) ;
382
+ rotate ! ( rotate_huge_half_plus_one, gen_random, 5 * 1024 * 1024 , 5 * 1024 * 1024 / 2 + 1 ) ;
0 commit comments