rust/hwphysics/benches/ecs_bench.rs
changeset 15944 ccd458b08113
parent 15943 feb7a76915d2
child 15945 343b8819b051
equal deleted inserted replaced
15943:feb7a76915d2 15944:ccd458b08113
    50                 .run(|(p, v): (&mut P, &mut V)| v.velocity += black_box(p.position));
    50                 .run(|(p, v): (&mut P, &mut V)| v.velocity += black_box(p.position));
    51         })
    51         })
    52     });
    52     });
    53 }
    53 }
    54 
    54 
       
    55 pub fn component_multirun(c: &mut Criterion) {
       
    56     for n in (16..=64).step_by(16) {
       
    57         let mut manager = GearDataManager::new();
       
    58 
       
    59         manager.register::<P>();
       
    60         manager.register::<V>();
       
    61 
       
    62         for i in 1..=(SIZE / n) {
       
    63             let gear_id = GearId::new(i as u16).unwrap();
       
    64             manager.add(gear_id, &P::default());
       
    65             manager.add(gear_id, &V::default());
       
    66         }
       
    67 
       
    68         c.bench_function(&format!("component run {}", n), |b| {
       
    69             b.iter(|| {
       
    70                 for i in 0..n {
       
    71                     manager
       
    72                         .iter()
       
    73                         .run(|(p, v): (&mut P, &mut V)| v.velocity += black_box(p.position));
       
    74                 }
       
    75             })
       
    76         });
       
    77     }
       
    78 }
       
    79 
    55 pub fn component_add_remove(c: &mut Criterion) {
    80 pub fn component_add_remove(c: &mut Criterion) {
    56     let mut manager = GearDataManager::new();
    81     let mut manager = GearDataManager::new();
    57     let mut gears1 = vec![];
    82     let mut gears1 = vec![];
    58     let mut gears2 = vec![];
    83     let mut gears2 = vec![];
    59 
    84 
    82             std::mem::swap(&mut gears1, &mut gears2);
   107             std::mem::swap(&mut gears1, &mut gears2);
    83         })
   108         })
    84     });
   109     });
    85 }
   110 }
    86 
   111 
    87 criterion_group!(benches, array_run, component_run, component_add_remove);
   112 criterion_group!(benches, array_run, component_run, component_multirun, component_add_remove);
    88 criterion_main!(benches);
   113 criterion_main!(benches);