Hello,
Dans mon logiciel, je sauvegarde des points (environ 100'000 à 200'000 points avec précision à 10 chiffres après la virgule). Pour accélérer l'ouverture du fichier, je stock tous les points concaténés en un seul string. Effectivement la lecture est extrêmement rapide, mais pour la sauvegarde je me retrouve face à un problème :
- je lis mes points au fur et à mesure et j'agrandis un TStringStream :
J'ai constaté qu'au fur et à mesure de l'avancement de la sauvegarde, la fonction points.WriteString() met de plus en plus de temps à s'exécuter. J'ai le sentiment que le soft cherche un nouvel espace mémoire et doit recopier le stringStream, ce qui prend du temps.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 points := TStringStream.Create('') ; for i := 0 to nbPoints do points.WriteString(tabPoints[i]+#13+#10) ; monParseurXML.Save(points.ReadString(points.Size)) ; points.Free ;
Je cherche donc à accélérer la création de cet énorme string qui contient tous les points. Le problème est que je suis obligé d'utiliser un paramètre de type string pour ma sauvegarde.
Avez-vous des conseils ?
Partager