Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Kopieren mit Threads [Test/Optimierung] (https://www.delphipraxis.net/118498-kopieren-mit-threads-%5Btest-optimierung%5D.html)

C.Schoch 8. Aug 2008 19:52


Kopieren mit Threads [Test/Optimierung]
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
Ich hab mal ein kleines Testprog gebastelt um Dateien mit Hilfe 2er Threads und einem Ringpuffer zu kopieren.
Eingesetzt wurden sowohl TFileStream als auch BlockRead/BlockWrite.
Erreichen wollte ich eigentlich eine höhere Transferrate.

Leider scheint dieses Vorhaben relativ erfolglos gewesen zu sein.
Könnte einer von euch mal einen Blick darauf werfen, vielleicht habe ich auch einen Denkfehler oder das Konzept ist von Grund auf mit den technischen Gegebenheiten nicht vereinbar.

Im Anhang die Sourcen des Progs.

Danke

himitsu 8. Aug 2008 20:13

Re: Kopieren mit Threads [Test/Optimierung]
 
wie sieht denn deine Testumgebung aus?

Ich vermute mal du versuchtest die Dateien auf der selben Partition/Festplatte zu kopieren,
wobei sich die gleichzeitigen Schreib-/Leseoperationen gegenseitig ausbremsen.
(wenn der Schreib-/Lesekopf der Festplatte ständig zwischen beiden Dateien, bzw. der Schreib- und der Leseoperation, hin und her springen muß)


Dann wirkt bei "größeren" Dateien die WindowsFileCache eher hinderlich und die Dateioperationen via TFileStream werden grundsätzlich über diese FileCache umgeleitet.


PS: mein D7, was ich hier nur hab, mag deine csUtils.dcu nicht :nerd:

C.Schoch 8. Aug 2008 21:26

Re: Kopieren mit Threads [Test/Optimierung]
 
Hi,
Problem mit csUtils behoben.
Zitat:

Zitat von himitsu
wie sieht denn deine Testumgebung aus?

Es sind 2 verschiedene physikalisch Festplatten an 2 verschiedenen Controlern
Lässt sich der FileCache umgehen?

himitsu 8. Aug 2008 22:55

Re: Kopieren mit Threads [Test/Optimierung]
 
"Run Thread" endete mit
Zitat:

---------------------------
Anwendungsfehler
---------------------------
Exception EAccessViolation in Modul Project1.exe bei 000021C4.

Zugriffsverletzung bei Adresse 004021C4 in Modul 'Project1.exe'. Schreiben von Adresse 00000029.


---------------------------
OK
---------------------------

[add] ja Hier im Forum suchenNonCached


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:17 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