[P0][ECS] Reproducible ECS benchmarks and memory baselines
Maintainers usually reply within 1 day
@bozoslav is already working on this.
Since Nov 11, 2026.
Assessment
This issue has not been assessed yet.
Description
Problem and goal
Establish a representative, reproducible performance baseline before redesigning storage or scheduling.
Implementation scope
- Benchmark 1k/100k/1M homogeneous iteration; many small archetypes; optional and filtered queries; query construction; spawn/despawn; add/remove component churn; batch spawning; and parallel scaling.
- Include one mixed game-like workload with multiple component layouts and systems.
- Compare with a pinned bevy_ecs version using equivalent operations and clearly documented limitations.
- Record memory, allocations, p50/p95, compiler/toolchain, hardware, feature flags and warm-up.
Acceptance criteria
- One documented command exports machine-readable results.
- Correctness is verified separately from throughput.
- Baselines and benchmark methodology are committed; no flaky wall-clock CI thresholds.
Relevant code
crates/crabby_ecs/src/game.rs
Dependencies and notes
Precedes all performance-motivated ECS changes.
Compatibility: preserve existing public Rust and C/C++ APIs unless an independently approved design explicitly requires a breaking change. Collect correctness results and before/after measurements for performance-oriented changes.
Source audit and first contribution (2026-11-09)
Reviewed against source baseline df5c1d4 and merged implementation PRs through #167. The full issue acceptance criteria are still open; this audit does not mark the task complete. Existing priority is unchanged.
Starting point: Extend the existing ponko_bench runner (crates/crabby_bench/src/main.rs); the physical directory is retained after the rename. Existing iteration comparisons, warmup and summaries are starting points, not the full acceptance matrix.
First slice: Add many-small-archetype and repeated-query-construction cases with machine-readable output, then extend memory/churn/scaling coverage.
Dependencies and coordination: Baseline for performance-driven ECS work; coordinate with #133.
Focused Rust-only PRs are welcome; a contributor need not complete this entire issue in one PR or also implement C/C++ bindings and guide chapters. Maintainers coordinate scoped documentation/native follow-ups. Preserve existing compatibility and supply tests/evidence relevant to the slice.
- Dominant language
- Rust
- Stars
- 4
- Forks
- 0
- Avg merge
- 45m
- Merged PRs (30d)
- 199
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from ponkoengine/ponko
-
area: ecs bug priority: P2 type: testing
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
ponkoengine/ponko#321 ·
Maintainers usually reply within 1 day
-
area: rendering bug priority: P2 type: testing
Difficulty 4/5 3-5 days Newbie friendliness 44/100
ponkoengine/ponko#322 ·
Maintainers usually reply within 1 day
-
area: build area: platforms help wanted priority: P3 type: feature
Difficulty 4/5 3-5 days Newbie friendliness 45/100
ponkoengine/ponko#282 ·
Maintainers usually reply within 1 day
-
area: tooling priority: P2 type: feature
Difficulty 5/5 Over a week Newbie friendliness 35/100
ponkoengine/ponko#262 ·
Maintainers usually reply within 1 day
-
area: build documentation help wanted priority: P2 type: feature
Difficulty 4/5 3-5 days Newbie friendliness 45/100
ponkoengine/ponko#246 ·
Maintainers usually reply within 1 day
All issues in ponkoengine/ponko
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
aws/aws-emulator#30 · 1 comment ·
-
tormach-plasma refusal text with no machine reads "no machine is not declared a plasma machine"Openarea:post bug effort:low P2 source:agent
Difficulty 1/5 1-3 hours Newbie friendliness 82/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
Maintainers usually reply within 1 day
-
Chat images never show without ImageMagick: ffprobe fallback uses an option string ffprobe 9 rejectsOpen
Difficulty 2/5 1-3 hours Newbie friendliness 79/100
eliasstravik/herdr-projects#1011 ·
-
design-data-spec
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
adobe/spectrum-design-data#1744 ·
Maintainers usually reply within 1 day