Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: ReadFile und WriteFile durch Threads optmieren

  Alt 1. Jan 2018, 15:04
Klar kann man das durch Threads optimieren, aber wenn es sich um HDDs handelt, dann blockieren sie sich gegenseitig.
Also Threads machen da genau das Gegenteil und es wird langsamer.

Auch bei SSDs muß es nicht unbedingt besser werden. Kommt drauf an, ob die Firmware auch multithread arbeitet, aber meistens geht das.

Aber DU mußt nicht unbeding tselbst die Threads verwalten, denn WriteFile kann auch Asynchron arbeiten, also die API startet nur die Schreib-/Leseaktion und kehrt sofort zurück.
Du kannst dann parallel Mehrwas im selben Thread machen. > Overlapped IO

Optimieren kann man zusätzlich noch durch Wahl der Puffergröße im Programm, um die Anzahl der IO-Operationen zu optimieren/verringern.
Dann kann man noch vorallem den WindowsFileCache abschalten, da der bei so großen Datenmengen alles Andere auslagert. Selbst wenn Windows so eingestellt wurde, dass Programmespeicher Vorrang vor Cache hat, werden Programme ausgelagert und dann wird das System langsam.

https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx
> File Buffering, File Caching und Asynchronus I/O

Zitat:
Unstoppable Copier
Ich hatte noch nie so ein Schlechtes Programm gesehn.
Speziell wenn Fehler existieren, dann wird der Schott extrem langsam, da immer genau 1 Byte kopiert wird, aber wenn etwas kaputt ist, dann sind das immer koplette Sektoren, womit dann mehrmals Leseaktionen auf diese Sektoren ausgeführt werden und für jedes einzelne Byte dann erneut Timeouts/Fehlerpprüfung/Fehlerbehebung/... ausgelöst werden, anstatt nur einmal pro Sektor.
Und wenn ein Sektor kaputt ist, dann betrifft das im FileSystemTreiber einen Kompletten Cluster, was die Lesedauer nochmals verlierfacht.

Tipp: Meinen Hier im Forum suchenFileSplitter und seinen Post in der DP suchen ... da hatte ich damals mal so ordentlich mit den Lese-&Schreibzugriffen experimentiert.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat