Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Performance von AssignFile etc. (https://www.delphipraxis.net/142073-performance-von-assignfile-etc.html)

messie 21. Okt 2009 16:21


Performance von AssignFile etc.
 
Moin,

ich habe eine Anwendung, die ersten n Byte von Binärdateien auslesen muss. Dazu werden die Dateien einige Male hintereinander geöffnet.
Nun habe ich tausend Dateien, die übers Netz geöffnet werden und da wird das Gesicht immer länger. Ich vermute, die Kommunikation über den Server (großes weltweites Firmennetz) bremst da entscheidend.
Ich wollte in dem Zusammenhang aber mal fragen, wie die Performance der Dateioperationen aussieht. Ich benutze Assignfile und read, gibt es da erheblich schnellere Routinen, die vielleicht günstiger mit dem Cache umgehen?

Grüße, Messie

mkinzler 21. Okt 2009 16:23

Re: Performance von AssignFile etc.
 
Dir ist aber bewusst, das wenn du eine Datei übers Netzwerk öffnest, eine lokale Kopie (bzw. Teilkopie) der Datei angelegt wird?

shmia 21. Okt 2009 16:43

Re: Performance von AssignFile etc.
 
Liste der Anhänge anzeigen (Anzahl: 1)
Es kommt darauf an, wie groß die einzelnen Speicherblöcke sind, die am Stück eingelesen werden.
256 * 4 Bytes braucht wesentlich mehr Zeit als 1 * 1024 Bytes.
Im Anhang ist dazu ein Testprogramm.
Damit kannst du die Lese- und Schreibgeschwindigkeit auf der lokalen Platte und übers Netzwerk ausmessen.

Ich habe hier 1GBit/s Ethernet :P ; damit ist kaum ein Unterschied zwischen einer Datei im Netz und Lokal festzustellen.

sirius 21. Okt 2009 16:56

Re: Performance von AssignFile etc.
 
Zitat:

Zitat von messie
Ich wollte in dem Zusammenhang aber mal fragen, wie die Performance der Dateioperationen aussieht. Ich benutze Assignfile und read, gibt es da erheblich schnellere Routinen, die vielleicht günstiger mit dem Cache umgehen?

Die greifen alle auf CreateFile und ReadFile der WinAPI zurück.Performance kannst du IMHO nur durch geschickte Wahl der zu lesenden Blöcke machen (siehe shmia)

himitsu 21. Okt 2009 17:02

Re: Performance von AssignFile etc.
 
und AssignFile hat auch noch einen eigenen Puffer (es werden also immer mindestens Min(128, FileSize) Bytes geladen + den Puffer der Netzwerkroutinen

messie 21. Okt 2009 18:09

Re: Performance von AssignFile etc.
 
Danke schonmal. Wenn ich mal wieder an den Endkunden komme, werde ich das Netz dort mal testen.

Im aktuellen Beispiel werden 20 x 80 Byte ausgelesen. Und das zwei- bis dreimal pro Datei. Wir hatten das in einem offenen Netzwerk getestet, da dauerte es einige Sekunden (<30), ähnlich wie lokal auf der Festplatte. Also noch nicht wirklich störend. Über den Server dauert es bei 200 Dateien etwa zwei Minuten. Vielleicht haut da auch die Sicherheitssoftware dazwischen, das hatte ich schon mal.

Grüße, Messie


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:45 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz