Bonjour
Dans un projet FMX, j'utilise:
Dans une fonction, je lis ce fichier XML pour remplir plusieurs tableaux d'entier ou de single.
Code : Sélectionner tout - Visualiser dans une fenêtre à part DefaultDOMVendor := sOmniXmlVendor;
Les tableaux sont dimensionnés et pré-remplis de 0 avant lecture du node XML correspondant.
Dans la première version, je faisais un truc comme ça:
Entre la première et la dernière ligne de code, mon programme prenait 2.5mo de RAM supplémentaire. Je ne comprends toujours pas pourquoi.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 NdBlock := Node.ChildNodes.First; I := 1; while Assigned(NdBlock) do begin NdLine := NdBlock.ChildNodes.First; while Assigned(NdLine) do begin if I <= High(Heights) then Heights[I] := GetInt(NdLine.NodeValue) else break; Inc(I); NdLine := NdLine.NextSibling; end; NdBlock := NdBlock.NextSibling; end;
J'ai remplacé par :
Maintenant, environ 1 mo de moins mais toujours une perte qui ne se rattrape jamais même après finalisation de mon IXMLDocument qui me sert de lecteur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 K := 0; for I := 0 to Node.ChildNodes.Count - 1 do begin NdBlock := Node.ChildNodes[I]; for J := 0 to NdBlock.ChildNodes.Count - 1 do begin Inc(K); Heights[K] := GetInt(NdBlock.ChildNodes[J].NodeValue) end; end;
Questions:
Est-il normal que je perde autant de RAM à chaque utilisation ?
Connaissez-vous une alternative qui ferait le boulot mieux que ça ?
Partager