Bonjour,
J'ai beaucoup de fichiers binaires (taille max 300 Ko) qui arrivent sur une ressource et je cherche à les traiter le plus vite possible car j'ai de fortes contraintes de temps sur cette application.
Tout naturellement j'utilise fopen() puis fread() pour la lecture des fichiers binaires. Ma lecture du fichier et son traitement sont séquentiels, je n'ai pas besoin de naviguer dans mon fichier, je ne fais que le dérouler.
Je me posais la question d'optimiser mes appels à la fonction fread() et de l'utilité de passer par un buffer de lecture (char *).
Qu'est-ce qui est le plus rapide et pourquoi ?
1 - Lire d'un bloc tout le fichier, le stocker dans un buffer puis travailler octet par octet sur ce buffer.
2 - Lire le fichier bloc par bloc dans une boucle avec un buffer de taille moyenne (exemple 256 octet) puis travailler octet par octet sur ce buffer.
3 - Lire le fichier octet par octet avec fread et donc travailler directement avec le résultat de la lecture par fread
En gros est-il plus avantageux de travailler sans buffer et donc multiplier les appels à fread() ou bien augmenter la taille du buffer pour minimiser les appels à fread() ?
Merci d'avance pour vos lumières.
Partager