An experimental, status effects-as-entities system for Bevy.
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Benchmarks for merge mode.

+75
+5
Cargo.toml
··· 68 68 name = "insert_mode" 69 69 path = "benches/insert_mode.rs" 70 70 harness = false 71 + 72 + [[bench]] 73 + name = "merge_mode" 74 + path = "benches/merge_mode.rs" 75 + harness = false
+70
benches/merge_mode.rs
··· 1 + //! Benchmarks for applying merge-mode effects. 2 + 3 + use bevy_alchemy::{ 4 + AlchemyPlugin, Effect, EffectCommandsExt, EffectMode, EffectStacks, EffectedBy, 5 + }; 6 + use bevy_app::App; 7 + use bevy_ecs::name::Name; 8 + use bevy_ecs::prelude::{Component, Entity, SpawnRelated}; 9 + use criterion::{Criterion, criterion_group, criterion_main}; 10 + 11 + #[derive(Component, Clone)] 12 + struct BenchEffect; 13 + 14 + fn init_app() -> (App, Entity) { 15 + let mut app = App::new(); 16 + app.add_plugins(AlchemyPlugin); 17 + 18 + let entity = app 19 + .world_mut() 20 + .spawn(( 21 + Name::new("Target"), 22 + EffectedBy::spawn(Effect(( 23 + Name::new("Effect"), 24 + EffectMode::Merge, 25 + BenchEffect, 26 + EffectStacks::default(), 27 + ))), 28 + )) 29 + .id(); 30 + 31 + (app, entity) 32 + } 33 + 34 + fn with_effect(c: &mut Criterion) { 35 + let (mut app, entity) = init_app(); 36 + 37 + c.bench_function("Merge mode matched `with_effect`", |b| { 38 + b.iter(|| { 39 + app.world_mut().commands().entity(entity).with_effect(( 40 + Name::new("Effect"), 41 + EffectMode::Merge, 42 + BenchEffect, 43 + EffectStacks::default(), 44 + )); 45 + app.world_mut().flush(); 46 + }) 47 + }); 48 + } 49 + 50 + fn related_spawner(c: &mut Criterion) { 51 + let (mut app, entity) = init_app(); 52 + 53 + c.bench_function("Merge mode matched related spawner", |b| { 54 + b.iter(|| { 55 + app.world_mut() 56 + .commands() 57 + .entity(entity) 58 + .insert(EffectedBy::spawn(Effect(( 59 + Name::new("Effect"), 60 + EffectMode::Merge, 61 + BenchEffect, 62 + EffectStacks::default(), 63 + )))); 64 + app.world_mut().flush(); 65 + }) 66 + }); 67 + } 68 + 69 + criterion_group!(benches, with_effect, related_spawner); 70 + criterion_main!(benches);