AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TFileStream Read

Ein Thema von MicMic · begonnen am 1. Feb 2020 · letzter Beitrag vom 7. Feb 2020
 
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.378 Beiträge
 
Delphi 12 Athens
 
#5

AW: TFileStream Read

  Alt 1. Feb 2020, 22:53
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. MSDN-Library durchsuchenFILE_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
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 1. Feb 2020 um 23:15 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz