Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
before fixing .each performance
  • Loading branch information
Indra-db committed Jul 18, 2025
commit aef1e3ee896daff67d8baf31d4f1e2de28a16351
7 changes: 7 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,13 @@ libc = "0.2.169"
lto = true
codegen-units = 1
panic = "abort"
debug = false

[profile.bench]
inherits = "release"
lto = true
codegen-units = 1
panic = "abort"

[profile.dev.package]
insta.opt-level = 3
Expand Down
17 changes: 17 additions & 0 deletions flecs_ecs/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,10 @@ flecs_ecs_sys = { workspace = true }
bitflags = "2.9.1"
compact_str = { version = "0.9.0", default-features = false }
hashbrown = "0.15.4"
seq-macro = "0.3.6"
rand = "0.9.1"
libc = "0.2.174"
seq = "0.5.0"

# used for backtraces upon hardware exceptions during test
# only used when "test-with-crash-handler" feature enabled
Expand Down Expand Up @@ -213,3 +217,16 @@ name = "examples"
path = "examples/flecs/z_ignore_main_test.rs"
test = true
doc-scrape-examples = true

######################
# Benchmarks
######################

# solves criterion problem for using baseline
[lib]
bench = false

[[bench]]
name = "main"
path = "benches/flecs/_main.rs"
harness = false
145 changes: 145 additions & 0 deletions flecs_ecs/benches/flecs/_main.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
#![allow(unused_imports)]
#![allow(unused)]

use core::time::Duration;

use criterion::{Criterion, criterion_group, criterion_main};
pub use seq_macro::seq;

pub mod common_bench;

mod add_remove_bench;
mod commands_bench;
mod create_delete_bench;
mod parenting_names_bench;

mod get_bench;
mod has_bench;
mod observer_bench;
mod query_bench;
mod set_bench;

use add_remove_bench::*;
use commands_bench::*;
use create_delete_bench::*;

use get_bench::*;
use has_bench::*;
use observer_bench::*;
use parenting_names_bench::*;
use query_bench::*;
use set_bench::*;

fn ecs_default_criterion() -> Criterion {
let mut criterion_config = Criterion::default().configure_from_args();
criterion_config = criterion_config
.warm_up_time(Duration::from_millis(200))
.measurement_time(Duration::from_secs(1))
.sample_size(25)
.noise_threshold(0.01)
.confidence_level(0.95)
.significance_level(0.05)
.without_plots();
criterion_config
}

criterion_main!(
// g_add_remove,
// g_commands,
// g_create_delete_entities,
// g_get,
// g_parenting,
// g_has,
// g_set,
// g_observers,
g_query
);

criterion_group!(
name = g_query;
config = ecs_default_criterion();
targets =
query_iter,
);

criterion_group!(
name = g_has;
config = ecs_default_criterion();
targets =
has,
owns
);

criterion_group!(
name = g_parenting;
config = ecs_default_criterion();
targets =
change_parent,
lookup_depth,
set_name,
);

criterion_group!(
name = g_get;
config = ecs_default_criterion();
targets =
get,
get_pair,
get_mut,
get_target,
get_parent,
get_inherited_w_depth,
);

criterion_group!(
name = g_commands;
config = ecs_default_criterion();
targets =
add_remove_cmd,
add_existing_cmd,
create_delete_entities_cmd,
);

criterion_group!(
name = g_add_remove;
config = ecs_default_criterion();
targets =
add_remove,
add_remove_hooks,
add_existing,
add_remove_1_tag_to_entity_with_n_components,
add_remove_override,
toggle_component,
);

criterion_group!(
name = g_set;
config = ecs_default_criterion();
targets =
set,
set_remove
);

criterion_group!(
name = g_create_delete_entities;
config = ecs_default_criterion();
targets =
create_w_add_in_observer,
create_delete,
entity_new_delete,
entity_new_w_name_delete,
create_children_w_reachable,
create_delete_tree,
//c_create_delete_tree
instantiate_delete_tree
);

criterion_group!(
name = g_observers;
config = ecs_default_criterion();
targets =
emit,
emit_propagate,
emit_forward,
modified
);
Loading