Repository navigation
perf(editor): reuse statistic snapshots and add bounded frame trends #33
Description
Verified on branch / awaiting merge
Production implementation: dd5979c613b0fe8ebd9f7026f25001ceee9f8cee. Delivered head: dbae93e8f211d45a69cdffdb6afa3a33a0af0fa5; the subsequent diff contains documentation/acceptance evidence only. Exact-head CI: Engine CI and NuGet dependency graph passed; all six checks on this exact head are successful. All applicable acceptance conditions for this issue are verified; unavailable physical/manual device checks are explicitly scoped, not reported passed.
Owner: EditorStatistics authority and bounded Stats Panel sampler. Implementation commits: b7a8924d, 63d4f7dc.
Evidence: complete report, exact-head delivery attachment, portable test-case/raw-measurement/requirement indexes linked by the report. Specific proof: Contracts: unchanged snapshot reuse/frame ordering; Visual: actual native trends, interval/window/reset; Products: actual Stats Panel 100 cycles; Quantitative: statistics.
Commands: official tests/Invoke-EditorUiAcceptance.ps1 Contracts/Workflows/Visual/Lifecycle/Products with SDK-selected independent outputs; complete source/entry preparation; formal InnoEngine.Build scripts --ide for the three companions; tests/Invoke-WikiChecks.ps1; controlled public performance fixtures where applicable. The report records original command owners, TRX/binlogs, negative tests, failures, skips, input hashes and device limits.
Profiles overlap; do not sum their pass counts into a distinct-test claim. Windows-only sharing fixtures and Unix-only filesystem fixtures are scoped to the executing host. Real native contexts/simulated display metrics and hidden product feature journeys are not a claim of physical display, OS IME or manual Mac testing. No BGCS/vendor/package/generated-binding modification, parallel Core system, test hook, IVT or private reflection was used.
Keep this issue Open. PR #26 includes an individual Fixes #33 and will close it only when the user merges to master. No automatic merge or premature master-resolution claim.
Original defect, ownership and accepted work
The following baseline observations describe the issue as opened. The verification above supersedes intermediate pending checkpoints; original failed/negative logs remain preserved. Acceptance checkboxes are checked only after the exact delivery-head verification completes.
Parent and original requirement
Parent: #27. Work item E06 from the approved Editor UI closure plan and its original implementation/acceptance requirements.
Baseline facts and risks at issue creation
GetSnapshot merges/sorts/copies on every read and Stats groups on every draw. A frame average sampler exists, but trends and reusable unchanged display snapshots are incomplete.
Owner and dependency boundary
EditorStatistics remains the contribution authority; Stats Panel owns bounded sampling/display state.
Dependencies: #30.
Implementation
- Reuse immutable snapshots when content/order are unchanged while preserving current/completed-frame semantics.
- Rebuild Panel grouping only when its snapshot changes.
- Sample FPS/frame time every 0.5 seconds, retaining at most 120 samples over 60 seconds.
- Keep trend buffers panel-owned; do not parse arbitrary statistic strings as numbers or add a bus/pool.
- Reset discontinuous sampling explicitly on closure/long pauses.
Acceptance
- Repeated unchanged reads reuse results; change/delete/reorder/group updates are correct.
- Provider draw order does not lose contributions.
- Test sampling interval/window/capacity/discontinuity.
- Panel reopening does not accumulate references or storage.
- Measure idle display allocation/repeated work under the final performance suite.
Failure and lifecycle constraints
Preserve diagnostics, cancellation, atomic rollback/publication, Missing recovery and generation retirement. Reuse Core Events, Identity, IO, Serialization and History. Do not modify BGCS/vendor/generated code or add global/implicit imports, compatibility paths, IVT or private reflection.
Evidence and closure
Commits, exact commands, logs/TRX/data and remaining limits will be added during implementation. Until all acceptance passes this issue remains open. After verification mark Verified on branch / awaiting merge; add Fixes #33 with this issue's actual number to PR #26 only when complete. Close on merge to master, not on branch implementation.
Activity