Bonjour,
Je dispose d'une fonction qui doit parcourir un fichier se composant de différents blocs de lignes de textes, délimités par les chaînes de caractères "DEBUT" et "FIN", comme ceci :
La fonction est appelée, elle ouvre le fichier, et lorsqu'un bloc est trouvé, elle effectue quelques traitement puis s'arrête : elle est donc appelée autant de fois qu'il y a de blocs de données.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 DEBUT // Données FIN DEBUT // Données FIN [...]
J'ai inclus dans le code le fait qu'à chaque bloc, je sauvegarde la position de l'offset en lecture dans le fichier dans une variable ULONGLONG, avant de retourner ce dont j'ai besoin (j'utilise la classe CStdioFile pour gérer le parcours). Lors d'un appel ultérieur de la fonction, le fichier sera ouvert à la position donnée à la fin de la lecture du bloc précédent.
Je suis passé par ce système puisqu'auparavant, le fichier était toujours parcouru depuis le début, ce qui rendait l'application assez lente. Le fichier était alors géré avec des pointeurs FILE * et le parcours se faisait via les fonction fscanf(), gets().
Le problème est que je me retrouve avec une fonction encore plus lente qu'auparavant.
Connaitriez-vous un moyen d'optimiser ce parcours ?
Merci par avance.
Partager