diff --git a/Docs/Migration/11_Audit_Optimisation.md b/Docs/Migration/11_Audit_Optimisation.md index daddb46..efa7bdd 100644 --- a/Docs/Migration/11_Audit_Optimisation.md +++ b/Docs/Migration/11_Audit_Optimisation.md @@ -502,4 +502,32 @@ Rappels : Au menu principal, seuls 11 fichiers sont lus (0,085 s) : la lecture de `Modules` a lieu au lancement d'une partie. Instrumentation ajoutée à `ModdingExtra::LoadTxt` : bilan par type de fichier à la fermeture du jeu et par la commande -console `ModdingExtra.LoadTxtStats` (build `LifePlay_Build_5.5_DATA1`). \ No newline at end of file +console `ModdingExtra.LoadTxtStats` (build `LifePlay_Build_5.5_DATA1`). + +### 17.2 Étape 1 : résultats (2026-10-02) + +Lancement d'une partie (« Continue ») sur le build DATA1, juste après sa construction (fichiers jamais lus) : + +| Type | Lectures | Fichiers | Relectures | Volume | Temps de lecture | +|---|---:|---:|---:|---:|---:| +| `.lpscene` | 816 | 813 | 3 | 2,5 Mo | 3,86 s | +| `.lpaction` | 305 | 305 | 0 | 113 Ko | 1,23 s | +| `.lpstat` | 74 | 74 | 0 | 19 Ko | 0,33 s | +| autres (`.lpai`, `.lpworld`, `.txt`, `.lpcharacter`…) | 96 | 59 | 37 | 0,9 Mo | 0,26 s | +| **Total** | **1 291** | 1 251 | 40 | 3,6 Mo | **5,7 s** | + +Comparaison hors du jeu, sur les 1 271 `.lpscene` : 2,4 ms par fichier à la première lecture, mais **0,11 ms par fichier +une fois le cache du système chaud**. Le coût vient de l'ouverture à froid de centaines de petits fichiers (cache disque, +antivirus), pas de leur taille. + +Cela se retrouve dans la trace O2 : +- `PopulateRaws` prend 12,6 s au premier passage (fichiers froids), puis ≈ 6 s quand il est relancé (fermeture du + gestionnaire de mods, `CloseModManager` 6,2 s) ; +- **≈ 6 s** viennent donc de la lecture à froid et **≈ 6 s** de l'analyse en Blueprint (`PopulateScenes` 3,6 s, + `PopulateActions` 1,9 s…), à chaque passage. + +Conséquences pour la suite : +- **Étapes 2 et 3, réunies** (un fichier compilé lu une fois, puis `LoadTxt` servi depuis la mémoire) : environ −5 à + −6 s au premier chargement d'une partie, gain faible ensuite. +- **Étape 4** (analyse en C++) ou suppression des relances inutiles de `PopulateRaws` : jusqu'à −6 s **à chaque** + passage. \ No newline at end of file