Je suis relativement novice en matière de C# et de programmation, alors soyez indulgent avec moi. Je travaille sur une application où je dois lire des fichiers et les traiter par morceaux (par exemple, les données sont traitées par morceaux de 48 octets).
J'aimerais savoir ce qui est le plus performant, du point de vue des performances, de lire tout le fichier en une seule fois en mémoire et de le traiter ensuite, ou de lire le fichier par morceaux et de les traiter directement, ou encore de lire les données par gros morceaux (plusieurs morceaux de données qui sont ensuite traités).
Comment je comprends les choses jusqu'à présent :
Lire tout le fichier en mémoire
pros :
-Il est rapide, car l'opération la plus coûteuse en temps est la recherche, une fois la tête en place, la lecture est assez rapide.
contre :
-Il consomme beaucoup de mémoire
-Il consomme beaucoup de mémoire en très peu de temps (c'est ce que je crains le plus, car je ne veux pas que cela ait un impact notable sur les performances globales du système).
Lire le fichier par morceaux
pros :
-C'est plus facile (plus intuitif) à mettre en œuvre.
while(numberOfBytes2Read > 0)
read n bytes
process read data
-Il consomme très peu de mémoire
contre :
-Il pourrait prennent beaucoup plus de temps, si le disque doit rechercher à nouveau le fichier et déplacer la tête à la position appropriée, ce qui coûte en moyenne environ 12 ms.
Je sais que la réponse dépend de la taille du fichier (et du matériel). Je suppose qu'il est préférable de lire l'ensemble du fichier en une seule fois, mais pour quelle taille de fichier est-ce vrai ? quelle est la taille maximale recommandée pour lire en mémoire en une fois (en octets ou par rapport au matériel - par exemple % de RAM) ?
Merci pour vos réponses et votre temps.