Ich glaub die Blöcke in Windows File Cache sind 256 KB groß.
Dass heißt Windows liest so oder so das erstmal in den Cache, bevor du daraus eine Kopie bekommst.
Und ob 20*10 oder 200, das ist somit alles schon im FileCache und die HDD ist egal.
Nun kommt es also nur noch auf die Anzahl deiner Zugriffe an und da ist 1 Mal natürlich schneller als 20 Mal.
Bei diesen winzigen Mengen und Anzahlen wären ansonsten sämtliche Optimierungen bezüglich Zugriffe auf HDD und Cache sinnlos.
z.B.
FILE_FLAG_NO_BUFFERING
Fazit: Scheibe deinen Code, so dass er schön und wartbar wird und mach dir sonst keine Gedanken darüber,
so lange es nicht um Millionen Zugriffe und Milliarden von Bytes geht.
Wenn es einfach ist, dann lies mehreres 1 Mal in einen eigenen Puffer und verarbeite den Puffer/Array dann
und ansonsten einfach eins nach dem Anderen kopieren und verarbeiten.
Erfahrungswerte: "sehr oft" weniger als 8 KB zu lesen macht kaum sinn, besser in Schritten/Mehrfachem von 64 KB, was auch der Speicherverwaltung im
RAM entspricht. (VirtualAlloc: 64 KB Reservierungseinheiten in Teileinheiten von 8 KB)
Sektorgröße 512 Byte, bzw. bei neueren HDDs "nativ" 4 KB, auch wenn sie oft dem System den Zugriff auf 512 KB gewähren (weil immernoch einige Treiber/Programme zu doof sind und dann abkratzen, wenn es nicht genau 512 sind), oder wirklich die 4 KB Sektoren nativ rausgeben. (bei CD und DVD sind es auch um die 4 KB)
Joar, und SSD, SD-Card usw. oft 4 KB Speicher, aber beim Speicher das auch wieder geclustert (die Löschfunktion, für Neubeschreiben).
Die Partitionen sind dann aber im Dateisystemtreiber auch nochmal in Cluster aus mehreren Sektoren aufgeteilt ... oft 4 KB bis 64 KB