Je suis en train d'écrire une petite bibliothèque d'E/S pour vous aider dans un plus grand projet (passe-temps). Une partie de cette bibliothèque exécute diverses fonctions sur un fichier, qui est lu/écrit via l'objet FileStream
. Sur chaque passe StreamReader.Read(...)
,E/S de fichiers avec flux - meilleure taille de mémoire tampon
Je déclenche un événement qui sera utilisé dans l'application principale pour afficher les informations de progression. Le traitement qui se passe dans la boucle est vaired, mais ne prend pas trop de temps (il peut s'agir d'une simple copie de fichier, par exemple, ou peut impliquer un cryptage ...).
Ma question principale est: Quelle est la meilleure taille de mémoire tampon à utiliser? En pensant aux mises en page de disques physiques, je pourrais choisir 2k, ce qui couvrirait une taille de secteur de CD et est un bon multiple d'un secteur de disque dur de 512 octets. Plus haut dans l'arbre d'abstraction, vous pouvez opter pour un tampon plus grand qui pourrait lire un cluster FAT entier à la fois. Je me rends compte avec les PC d'aujourd'hui, je pourrais aller pour une option plus affamée de mémoire (un couple de MiB, par exemple), mais ensuite j'augmente le temps entre les mises à jour et l'utilisateur perçoit une application moins réactive. En passant, j'espère pouvoir fournir une interface similaire aux fichiers hébergés sur des serveurs FTP/HTTP (sur un réseau local/DSL fastish). Quelle serait la meilleure taille de mémoire tampon pour ceux-ci (encore une fois, un compromis «meilleur cas» entre la réactivité perçue et la performance)?
Cela peut être utile: http://stackoverflow.com/questions/19558435/what-is-the-best-buffer-size-when-using-binaryreader-to-read-big-files-1gb/19837238? noredirect = 1 # 19837238 –