2.2 KiB
2.2 KiB
Specification: UI Performance Metrics and AI Diagnostics
Overview
This track aims to resolve subpar UI performance (currently perceived below 60 FPS) by implementing a robust performance monitoring system. This system will collect high-resolution telemetry (Frame Time, Input Lag, Thread Usage) and expose it to both the user (via a Diagnostics Panel) and the AI (via API hooks). This ensures that performance degradation is caught early during development and testing.
Functional Requirements
- Metric Collection Engine:
- Track Frame Time (ms) for every frame rendered by Dear PyGui.
- Measure Input Lag (estimated delay between input events and UI state updates).
- Monitor CPU/Thread Usage, specifically identifying blocks in the main UI thread.
- Diagnostics Panel:
- A new dedicated panel in the GUI to display real-time performance graphs and stats.
- Historical trend visualization for frame times to identify spikes.
- AI API Hooks:
- Polling Tool: A tool (e.g.,
get_ui_performance) that allows the AI to request a snapshot of current telemetry. - Event-Driven Alerts: A mechanism to notify the AI (or append to history) when performance metrics cross a "degradation" threshold (e.g., frame time > 33ms).
- Polling Tool: A tool (e.g.,
- Performance Optimization:
- Identify the "heavy" process currently running in the main UI thread loop.
- Refactor identified bottlenecks to utilize background workers or optimized logic.
Non-Functional Requirements
- Low Overhead: The monitoring system itself must not significantly impact UI performance (target <1% CPU overhead).
- Accuracy: Frame timings must be accurate to sub-millisecond resolution.
Acceptance Criteria
- UI consistently maintains "Smooth Frame Timing" (minimized spikes) under normal load.
- Main thread load is reduced, evidenced by metrics showing less than 50% busy time during idle/light use.
- AI can successfully retrieve performance data using the
get_ui_performancetool. - AI is alerted when a simulated performance drop occurs.
- The Diagnostics Panel displays live, accurate data.
Out of Scope
- GPU-specific profiling (e.g., VRAM usage, shader timings).
- Remote telemetry/analytics (data stays local).