forked from 1b-agent/opencadstudio-upstream
perf: report which path the visible-entity selection took
The block member index cut the paper sheet's selection from 313 ms to 112 ms but left model space at 296 ms, which is not what a shared per-epoch index should do — the second call in a frame ought to be free. Either the drawing falls into the permissive legacy-DXF case, where the predicate still needs the full walk, or the index is being rebuilt between the two calls. The wires-build line now says which path ran and how many candidates it considered, so one run settles it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
efcd73727f
commit
67ea5fa2dc
1 file changed
+6
-1
+6
-1
@@ -8901,6 +8901,9 @@ impl Scene {
|
|||||||
|
|
||||||
let sort_cache_ms = crate::perf::elapsed_ms(t_fn);
|
let sort_cache_ms = crate::perf::elapsed_ms(t_fn);
|
||||||
let t_visible = perf.then(iced::time::Instant::now);
|
let t_visible = perf.then(iced::time::Instant::now);
|
||||||
|
// Which path the selection took, and how many candidates it looked at.
|
||||||
|
let mut visible_path = "quadtree";
|
||||||
|
let mut visible_candidates = 0usize;
|
||||||
|
|
||||||
// Phase 2.1 — quadtree-driven candidate selection. When a view
|
// Phase 2.1 — quadtree-driven candidate selection. When a view
|
||||||
// AABB exists (Model layout with a settled camera), only iterate
|
// AABB exists (Model layout with a settled camera), only iterate
|
||||||
@@ -9200,7 +9203,7 @@ impl Scene {
|
|||||||
crate::perf_record!(
|
crate::perf_record!(
|
||||||
"[perf] wires-build total={:.1}ms sort_cache={:.1} visible={:.1} blk_cache={:.1} \
|
"[perf] wires-build total={:.1}ms sort_cache={:.1} visible={:.1} blk_cache={:.1} \
|
||||||
build={:.1} [classify={:.1} hits={:.1} tess={:.1} materialize={:.1}] sort={:.1}({}) \
|
build={:.1} [classify={:.1} hits={:.1} tess={:.1} materialize={:.1}] sort={:.1}({}) \
|
||||||
entities={} memo_hit={} memo_miss={} wires={} memo={}",
|
entities={} memo_hit={} memo_miss={} wires={} memo={} visible_path={} candidates={}",
|
||||||
crate::perf::elapsed_ms(t_fn),
|
crate::perf::elapsed_ms(t_fn),
|
||||||
sort_cache_ms,
|
sort_cache_ms,
|
||||||
visible_ms,
|
visible_ms,
|
||||||
@@ -9217,6 +9220,8 @@ entities={} memo_hit={} memo_miss={} wires={} memo={}",
|
|||||||
memo_misses,
|
memo_misses,
|
||||||
wires.len(),
|
wires.len(),
|
||||||
if memo_active { "on" } else { "off" },
|
if memo_active { "on" } else { "off" },
|
||||||
|
visible_path,
|
||||||
|
visible_candidates,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
wires
|
wires
|
||||||
|
|||||||
Reference in new issue
Block a user