feat(perf): Implement Input Lag estimation logic
This commit is contained in:
@@ -13,6 +13,10 @@ class PerformanceMonitor:
|
||||
self._cpu_usage = 0.0
|
||||
self._cpu_lock = threading.Lock()
|
||||
|
||||
# Input lag tracking
|
||||
self._last_input_time = None
|
||||
self._input_lag_ms = 0.0
|
||||
|
||||
# Start CPU usage monitoring thread
|
||||
self._stop_event = threading.Event()
|
||||
self._cpu_thread = threading.Thread(target=self._monitor_cpu, daemon=True)
|
||||
@@ -29,6 +33,9 @@ class PerformanceMonitor:
|
||||
def start_frame(self):
|
||||
self._start_time = time.time()
|
||||
|
||||
def record_input_event(self):
|
||||
self._last_input_time = time.time()
|
||||
|
||||
def end_frame(self):
|
||||
if self._start_time is None:
|
||||
return
|
||||
@@ -37,6 +44,11 @@ class PerformanceMonitor:
|
||||
self._last_frame_time = (end_time - self._start_time) * 1000.0
|
||||
self._frame_count += 1
|
||||
|
||||
# Calculate input lag if an input occurred during this frame
|
||||
if self._last_input_time is not None:
|
||||
self._input_lag_ms = (end_time - self._last_input_time) * 1000.0
|
||||
self._last_input_time = None
|
||||
|
||||
elapsed_since_fps = end_time - self._fps_last_time
|
||||
if elapsed_since_fps >= 1.0:
|
||||
self._fps = self._frame_count / elapsed_since_fps
|
||||
@@ -50,7 +62,8 @@ class PerformanceMonitor:
|
||||
return {
|
||||
'last_frame_time_ms': self._last_frame_time,
|
||||
'fps': self._fps,
|
||||
'cpu_percent': cpu_usage
|
||||
'cpu_percent': cpu_usage,
|
||||
'input_lag_ms': self._input_lag_ms
|
||||
}
|
||||
|
||||
def stop(self):
|
||||
|
||||
Reference in New Issue
Block a user