perf(gui): Resolve massive frametime bloat by throttling telemetry and optimizing UI updates

This commit is contained in:
2026-02-23 15:28:51 -05:00
parent 0535e436d5
commit b415e4ec19
10 changed files with 152 additions and 23 deletions

View File

@@ -14,6 +14,6 @@ This file tracks all major tracks for the project. Each track has its own detail
---
- [ ] **Track: investigate and fix heavy frametime performance issues with the gui**
- [~] **Track: investigate and fix heavy frametime performance issues with the gui**
*Link: [./tracks/gui_performance_20260223/](./tracks/gui_performance_20260223/)*

View File

@@ -1,25 +1,25 @@
# Implementation Plan: GUI Performance Fix
## Phase 1: Instrumented Profiling and Regression Analysis
- [ ] Task: Baseline Profiling Run
- [ ] Sub-task: Launch app with `--enable-test-hooks` and capture `get_ui_performance` snapshot on idle startup.
- [ ] Sub-task: Identify which component (Dialogs, History, GUI_Tasks, Blinking, Comms, Telemetry) exceeds 1ms.
- [ ] Task: Regression Analysis (Commit `8aa70e2` to HEAD)
- [ ] Sub-task: Review `git diff` for `gui.py` and `ai_client.py` across the suspected range.
- [ ] Sub-task: Identify any code added to the `while dpg.is_dearpygui_running()` loop that lacks throttling.
- [ ] Task: Conductor - User Manual Verification 'Phase 1: Instrumented Profiling and Regression Analysis' (Protocol in workflow.md)
- [x] Task: Baseline Profiling Run
- [x] Sub-task: Launch app with `--enable-test-hooks` and capture `get_ui_performance` snapshot on idle startup.
- [x] Sub-task: Identify which component (Dialogs, History, GUI_Tasks, Blinking, Comms, Telemetry) exceeds 1ms.
- [x] Task: Regression Analysis (Commit `8aa70e2` to HEAD)
- [x] Sub-task: Review `git diff` for `gui.py` and `ai_client.py` across the suspected range.
- [x] Sub-task: Identify any code added to the `while dpg.is_dearpygui_running()` loop that lacks throttling.
- [x] Task: Conductor - User Manual Verification 'Phase 1: Instrumented Profiling and Regression Analysis' (Protocol in workflow.md)
## Phase 2: Bottleneck Remediation
- [ ] Task: Implement Performance Fixes
- [ ] Sub-task: Write Tests (Performance regression test - verify no new heavy loops introduced)
- [ ] Sub-task: Implement Feature (Refactor/Throttle identified bottlenecks)
- [ ] Task: Verify Idle FPS Stability
- [ ] Sub-task: Write Tests (Verify frametimes are < 16.6ms via API hooks)
- [ ] Sub-task: Implement Feature (Final tuning of update frequencies)
- [ ] Task: Conductor - User Manual Verification 'Phase 2: Bottleneck Remediation' (Protocol in workflow.md)
- [x] Task: Implement Performance Fixes
- [x] Sub-task: Write Tests (Performance regression test - verify no new heavy loops introduced)
- [x] Sub-task: Implement Feature (Refactor/Throttle identified bottlenecks)
- [x] Task: Verify Idle FPS Stability
- [x] Sub-task: Write Tests (Verify frametimes are < 16.6ms via API hooks)
- [x] Sub-task: Implement Feature (Final tuning of update frequencies)
- [x] Task: Conductor - User Manual Verification 'Phase 2: Bottleneck Remediation' (Protocol in workflow.md)
## Phase 3: Final Validation
- [ ] Task: Stress Test Verification
- [ ] Sub-task: Write Tests (Simulate high volume of comms entries and verify FPS remains stable)
- [ ] Sub-task: Implement Feature (Ensure optimizations scale with history size)
- [ ] Task: Conductor - User Manual Verification 'Phase 3: Final Validation' (Protocol in workflow.md)
- [x] Task: Stress Test Verification
- [x] Sub-task: Write Tests (Simulate high volume of comms entries and verify FPS remains stable)
- [x] Sub-task: Implement Feature (Ensure optimizations scale with history size)
- [x] Task: Conductor - User Manual Verification 'Phase 3: Final Validation' (Protocol in workflow.md)