- Augmente le batch ReadList de 64 à 256 (-75% appels SOAP) - Élimine les doubles appel à queue_snapshot() dans sync_queue()–50% appels SOAP en moins - Introduit lcs_flags_optimized() pour élaguer préfixe/suffixes communs (LCS O(n) vs quadratique) - Met en place un polling adaptatif : 500ms actif / 5s veille - Factorise parse_duration() et invalidation de caches via méthodes utilitaires
1.1 KiB
1.1 KiB
Rapport : Optimisation performance OpenHome playlist
Résumé
Les optimizations implementées réduisent significativement le temps de synchronisation des playlists OpenHome de ~1000 titres. Les principales améliorations : passage du batch ReadList de 64 à 256 (−75% appels SOAP), elimination des doubles appels queue_snapshot() (−50% appels SOAP), et introduction du polling adaptatif avec intervalle long en veille (5s vs 500ms).
Fichiers modifies
-
pmocontrol/src/queue/openhome.rs- Batch ReadList augmente de 64 a 256
- Signature de replace_queue_with_pivot et replace_queue_standard_lcs modifiee pour accepter snapshot et current_track_ids
- Appel a sync_queue mis a jour pour passer les donnees deja disponibles -Nouvelle fonction lcs_flags_optimized avec elimination pre/suffixe communs
-
pmocontrol/src/music_renderer/watcher.rs- Ajout du champ is_active dans WatchedState pour le polling adaptatif
-
pmocontrol/src/music_renderer/musicrenderer.rs- Boucle watcher avec intervalle adaptatif (500ms actif, 5000ms veille)
- Marqueurs is_active=true dans play(), stop(), seek_rel_time(), sync_queue()