egui/crates/egui_demo_lib
Lucas Meurer 7d185acb41
Add button benchmark (#6854)
This helped me benchmark the atomic layout (#5830) changes.

I also realized that the label benchmark wasn't testing the painting,
since the buttons at some point will be placed outside the screen_rect,
meaning it won't be painted.

This fixes it by benching the label in a child ui.

The `label &str` benchmark went from 483 ns to 535 ns with these
changes.

EDIT:

I fixed another benchmark problem, since the benchmark would show the
same widget millions of times for a single frame, the WidgetRects
hashmap would get huge, causing each iteration to slow down a bit more
and causing the benchmark to have unreliable results.

With this the `label &str` benchmark went from 535ns to 298ns. Also the
`label format!` benchmark now takes almost the same time (302 ns).
Before, it was a lot slower since it reused the same Context which
already had millions of widget ids.
2025-04-28 11:58:05 +02:00
..
benches Add button benchmark (#6854) 2025-04-28 11:58:05 +02:00
data Fix broken images on egui.rs (move from git lfs to normal git) (#5480) 2024-12-16 14:16:54 +01:00
src Enable more clippy lints (#6853) 2025-04-24 17:32:50 +02:00
tests/snapshots Update failing snapshot tests (#5894) 2025-04-09 12:11:46 +02:00
Cargo.toml Optimize editing long text by caching each paragraph (#5411) 2025-04-01 18:55:39 +02:00
README.md Add button benchmark (#6854) 2025-04-28 11:58:05 +02:00

README.md

egui demo library

Latest version Documentation unsafe forbidden MIT Apache

This crate contains example code for egui.

The demo library is a separate crate for three reasons:

This crate also contains benchmarks for egui. Run them with

# Run all benchmarks
cargo bench -p egui_demo_lib 

# Run a single benchmark
cargo bench -p egui_demo_lib "benchmark name"

# Profile benchmarks with cargo-flamegraph (--root flag is necessary for MacOS)
CARGO_PROFILE_BENCH_DEBUG=true cargo flamegraph --bench benchmark --root -p egui_demo_lib  -- --bench "benchmark name"

# Profile with cargo-instruments
CARGO_PROFILE_BENCH_DEBUG=true cargo instruments --profile bench --bench benchmark -p egui_demo_lib -t time -- --bench "benchmark name"