Quelle taille de tampon dois-je choisir pour les fichiers en lecture / écriture via les fonctions POSIX fread / fwrite?
grep
, cp
)
read
/ write
fonctions ou ANSI / ISO / CEI fread
/ fwrite
fonctions?
Quelle taille de tampon dois-je choisir pour les fichiers en lecture / écriture via les fonctions POSIX fread / fwrite?
grep
, cp
)
read
/ write
fonctions ou ANSI / ISO / CEI fread
/ fwrite
fonctions?
Réponses:
Les fonctions ANSI / ISO fread/fwrite
sont tamponnées. Le tampon est généralement de 8 Ko et cela donne une granularité indépendante de ce que vous utilisez dans votre code. Il peut être judicieux d'augmenter un peu le tampon, peut-être jusqu'à la valeur ci-dessous. Pour le transfert en vrac, ils seront toujours un peu plus lents, en raison des copies supplémentaires.
Pour les read/write
fonctions POSIX , cela dépend du système d'exploitation et du périphérique et de beaucoup d'autres choses, mais l'expérience pratique est que vous n'obtenez aucune amélioration des performances en augmentant le tampon au-delà de dizaines de KiB, donc 32 ou 64 KiB sont à peu près corrects.
Sur certains systèmes, la dépendance est plus importante que sur d'autres. Sur Linux, la différence est généralement minime au-dessus de 8 Ko (donc le tampon par défaut est bien), par exemple sur Windows CE (en utilisant l'API native; ils n'ont pas POSIX), même plus grand que 64 Ko sont toujours utiles. Cela peut également dépendre de l'appareil.
fread
-à- dire fwrite
) et 32 / 64K pour les tampons non tamponnés? Si l'envoi de données d'image existe-t-il une justification particulière pour choisir la mise en mémoire tampon ou non en mémoire tampon?