Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: Dateien kopieren - TThread

  Alt 26. Mai 2012, 08:23
Der Geschwindigkeitszuwachs ist enorm:
1 Thread, 100 x 10MB-Dateien ~ 25 Sekunden und mehr
5 Threads (je Thread 20 Dateien), ~ 10 bis 15 Sekunden.
Wie und wie oft hast du das gemessen?

Das Problem bei Dateizugriffen ist meistens nicht die CPU, sondern die Festplatte, dazu dann noch die Controler und die Caches.
Je mehr kopiert werden soll, um so besser kann es sein, die Caches zu umgehen, um das System nicht komplett lahmzulegen, denn wenn z.B. die WindowsFileCache überfüllt wird, der RAM zur Neige geht, dann werden schnell mal die Programme ausgelagert.

Bei SSDs kommt es auf die Cache drauf an und ob, bzw wieviele Operationen sie gleichzeitig verarbeiten und zwischenspeichern kann, bzw. ob sie parallele Zugriffe auf unterschiedliche Chips/Speicherblöcke schafft.
Bei normalen HDDs (wenn die sonstige Hardware nicht langsamer ist, als die Platte), sind paralelle Zugriffe total kontraproduktiv, da die Platte dann mehr mit der Umpositionierung des Schreiblesekopfes beschäftigt ist, als mit dem eigentlichen Schreiben und Lesen. Dort ist das Sequentielle kopieren, über einen angemessenen Softwarepuffer der Ideale weg.

Da ein Computer aber auch noch andere Programme ausführt, kann es auch passieren, daß diese störend dazwischenfunken.




Wenn nebenbei diese Daten noch verarbeitet werden sollen, dann haben Threads eventuell wieder Vorteile.
Einer (pro HDD) ließt und schreibt und Einer/Mehrere verarbeiten die Daten.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (26. Mai 2012 um 08:34 Uhr)
  Mit Zitat antworten Zitat