profile-engine
Profile the Rust simulation engine to identify performance bottlenecks. Use when optimizing engine performance or investigating slow code paths.
Installation
Suivez les instructions du dépôt pour votre agent. Consultez les fichiers et dépendances avant l’installation.
Voir la source ↗GuidesInstructions
Profile Engine
Profile the Rust simulation engine using profile.py to identify hot paths.
Quick Start
cd ./crates/engine
./profile.py 5000 # Profile with 5000 iterations
./profile.py 10000 --top 30 # More iterations, show top 30 functions
./profile.py --json # Output as JSON for parsing
Prerequisites
cargo install samply
brew install binutils # Optional: better symbol resolution
What profile.py Does
- Builds the engine with debug symbols
- Runs samply profiler on the benchmark binary
- Parses the profile and resolves symbols
- Shows hot modules and functions by self time
Reading the Output
HOT MODULES (by self time)
─────────────────────────────────────────────────────────────────
12.5% █████████████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ engine::sim::engine
HOT FUNCTIONS (by self time, excluding std/core)
─────────────────────────────────────────────────────────────────
Self Total Function Location
───── ───── ────────────────────────────────────────────────── ────────────
8.2% 45.3% run_simulation engine.rs:123
4.1% 12.5% evaluate_rotation engine.rs:456
- Self time: Time spent in the function itself (optimization target)
- Total time: Time including all called functions
- High self time = hot path to optimize
Current Hot Paths
-
run_simulation- main simulation loop -
handle_gcd_ready- GCD event processing -
evaluate_rotation- spell availability checks -
cast_spell- spell execution -
EventQueue::push/pop- priority queue operations
Baseline Performance
- 300s fights, 5000 iterations
- ~0.26M sims/sec (optimized build)
- ~0.22M sims/sec (profiling build with debug symbols)
Advanced Usage
Manual samply (with browser UI)
cd ./crates/engine
RUSTFLAGS="-C force-frame-pointers=yes" cargo build --release
samply record --rate 4000 ./target/release/bench 5000
Opens Firefox Profiler with interactive flame graph.
Production Build Settings
After profiling, ensure production settings in Cargo.toml:
[profile.release]
lto = true
codegen-units = 1
panic = "abort"
Sources
Exemples
Consultez les exemples du dépôt source.
Voir la source ↗Historique source
- Date d’indexation
- 2026-01-20
- Mise à jour de l’index
- 2026-01-30
- Branch
- main
Les dates concernent ce répertoire. Consultez le dépôt pour l’historique du code.
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!