1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
//! Unified profiling counter API.
//!
//! Available only when the `profiling` feature is enabled. Re-exports the
//! per-crate counters from [`slate_reactive::profiling`] and
//! [`slate_renderer::profiling`], and owns the optional counting allocator
//! (`counting_alloc`).
//!
//! The default build is byte-equivalent — every counter increment sits
//! behind a `#[cfg(feature = "profiling")]` gate at the call site.
//!
//! # Counters
//!
//! - `signal_notify_count` — observer dispatches from `Signal::set`.
//! - `effect_reentry_count` — synchronous effect re-entries.
//! - `reentrancy_count` — `Signal::set` calls observed while an `Effect::run`
//! is on the same thread's call stack (write-during-dispatch pattern).
//! - `paint_cmd_count` — non-empty `pass.draw` emissions across the four
//! instanced pipelines.
//! - `alloc_count` / `dealloc_count` — heap activity, when
//! [`CountingAllocator`] is installed as `#[global_allocator]`.
//! - `view_render_count` — `View::render` invocations from the redraw pipeline.
//! - `view_render_ns` / `compute_layout_ns` / `paint_ns` / `present_ns` —
//! cumulative nanoseconds across the four redraw phases.
//!
//! # Reset semantics
//!
//! Bench harnesses call [`reset_counters`] at warmup-end and read deltas per
//! iteration. Counters are process-global atomics — concurrent reads from
//! multiple threads are safe but the values reflect process-wide activity.
pub use ;
pub use ;
pub use ;
pub use ;
/// Resets every profiling counter (reactive, renderer, allocator, redraw) to zero.