# Aggiornamento 2026-05-18 18:30 ## Obiettivo Registrare in un file dedicato le tempistiche dettagliate della pipeline, riducendo allo stesso tempo il costo della preview principale spostando la telemetria fuori dall'overlay. ## Modifiche - Aggiunta classe `PerfLogWriter` in [flywms_navigation.py](C:/devel/flywms/flywms_navigation.py) con: - bufferizzazione in memoria - flush periodico a tempo - flush per numero di righe - Nuovi parametri INI/CLI: - `perf_log_path` - `perf_log_flush_interval_sec` - `perf_log_flush_lines` - Il file di default e' `tempistiche.txt`. - Per ogni frame vengono scritte colonne TSV con: - `read_ms` - `yolo_ms` - `track_ms` - `draw_ms` - `ui_ms` - `snapshot_pause_ms` - `wms_wait_ms` - `loop_ms` - `loop_fps` - `yolo_real_fps` - conteggi oggetti/track/snapshot - ultimo comando navigazione - La finestra principale `flywms navigate` non disegna piu': - riga FPS/metriche - ultimo comando - testo sopra i bbox dei gaylord - testo sopra i bbox etichetta - Restano nella preview principale: - bbox - centri - fascia utile - freccia di movimento simulato - Aggiornata anche [flywms_navigation_gui.py](C:/devel/flywms/flywms_navigation_gui.py) per il nuovo renderer alleggerito e per il costruttore `UltralyticsDetector(..., yolo_half)`. ## Verifica Compilazione: ```powershell python -m py_compile flywms_navigation.py flywms_navigation_gui.py ``` Run di test: ```powershell python flywms_navigation.py --no-display --max-frames 20 --perf-log-path tempistiche-test.txt ``` Prime righe del log: ```text ts frame_id run_yolo read_ms yolo_ms track_ms draw_ms ui_ms snapshot_pause_ms wms_wait_ms loop_ms loop_fps yolo_real_fps src_fps preview_target yolo_target det labels tracks active snapshots command 2026-05-18 18:31:14 1 1 39.710 10065.399 0.106 0.000 0.000 0.000 0.000 10150.452 0.099 0.099 30.0 24.0 15.0 2 2 2 2 0 "" 2026-05-18 18:31:14 2 1 7.376 38.036 0.222 0.000 0.000 0.000 0.000 47.984 0.196 0.196 30.0 24.0 15.0 2 2 2 2 0 "" ``` ## Nota Nel test headless `draw_ms` e `ui_ms` sono giustamente nulli. Nel run reale con finestre aperte il file `tempistiche.txt` mostrera' il costo della parte grafica e delle pause simulate, che e' proprio quello che ci serve per capire dove si perde il target FPS.