Lorsque je passe en boucle les lignes du fichier A, j'analyse la ligne et je place chaque chaîne ( char*
) en un char**
.
En fin de ligne, je lance alors une procédure qui consiste à ouvrir le fichier B, en utilisant fgets
, fseek
y fgetc
pour récupérer les caractères de ce fichier. Je ferme ensuite le fichier B.
Je répète la réouverture et la refermeture du fichier B pour chaque ligne.
Ce que je voudrais savoir, c'est :
-
Est-ce que l'utilisation de
malloc
yfree
de sorte que je devrais utiliser quelque chose de statique commemyArray[NUM_STRINGS][MAX_STRING_WIDTH]
au lieu d'unchar** myArray
? -
L'ouverture et la fermeture du fichier B (en principe, plusieurs milliers de fois) entraînent-elles une surcharge importante des performances ? Si mon fichier A est trié, y a-t-il un moyen pour moi d'utiliser
fseek
pour revenir en arrière dans le fichier B, pour réinitialiser l'endroit où je me trouvais précédemment dans le fichier B ?
EDIT Il s'avère qu'une double approche a permis de réduire considérablement le temps d'exécution :
-
Mon fichier B est en fait un des vingt-quatre fichiers. Au lieu d'ouvrir le même fichier B1 des milliers de fois, puis B2 des milliers de fois, etc. j'ouvre le fichier B1 une fois, je le ferme, B2 une fois, je le ferme, etc. Cela réduit de plusieurs milliers de
fopen
yfclose
à environ 24. -
J'ai utilisé
rewind()
pour réinitialiser le pointeur de fichier.
Cela a permis de multiplier la vitesse par 60 environ, ce qui est plus que suffisant. Merci de m'avoir indiqué rewind()
.