AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Dateien performant mit Callback kopieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dateien performant mit Callback kopieren

Ein Thema von DieDolly · begonnen am 2. Aug 2018 · letzter Beitrag vom 3. Aug 2018
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

AW: Dateien performant mit Callback kopieren

  Alt 3. Aug 2018, 09:00
Ach Leute Copy und vergleichbares, verstehe die Diskussion nicht.
Zitat:
Ein gibt garnichts, was am Performantesten ist.
Performanter als das System Daten kopiert gibt es eh nicht.
Und welche variante von Copy man verwendet ist letztendlich uninteressant.

gruss

Geändert von EWeiss ( 3. Aug 2018 um 09:04 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.154 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Dateien performant mit Callback kopieren

  Alt 3. Aug 2018, 13:10
Performanter als das System Daten kopiert gibt es eh nicht.
Getestet oder nur geschätzt?
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: Dateien performant mit Callback kopieren

  Alt 3. Aug 2018, 13:16
Performanter als das System Daten kopiert gibt es eh nicht.
Getestet oder nur geschätzt?
Ich denke ist wohl abhängig von vielen Dingen.. Hardware, System, Software.
Sollte die Software schneller sein beim kopieren als das System selbst? Möchte ich bezweifeln.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.154 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Dateien performant mit Callback kopieren

  Alt 3. Aug 2018, 13:24
Sollte die Software schneller sein beim kopieren als das System selbst? Möchte ich bezweifeln.
Also geschätzt.

Ich denke, das eine optimierte Software schnelle sein kann als das System. Der System copy process muss sehr variable und auf viele Faktoren "achten"...

Ich kann mich gut daran erinnern, dass es immer Software gab, die abhängig von der Festplatte ausgerechnet hat wann und wie schnell die Festplatte sich dreht und genau ausgerechnet hat, wann ein Track in einer Umdrehung gelesen werden kann. (Bei Floppy's waren da die größte Unterschiede).

Ich denke, wenn ich einen großen Block RAM reserviere (Physikalisch nicht über die Swap Datei) und dann in einem Rutsch 1GB lade und schreibe ohne jeden test ob Festplatte voll usw. dann ist das schneller als ein Copy vom System.

Aber getestet hab ich es auch nicht (in letzter Zeit)…
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: Dateien performant mit Callback kopieren

  Alt 3. Aug 2018, 13:27
Zitat:
Also geschätzt.
Nein. Ich denke das ist logisch.. (aber desweiteren geschätzt. Ja )
Wie gesagt es gibt viele Faktoren.. Einer der größten mag dein Virenscanner sein

gruss
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#6

AW: Dateien performant mit Callback kopieren

  Alt 3. Aug 2018, 13:37
Wenn ich ohne Buffering von Windows und einer Buffergröße von 10 MB bei ReadFile eine 1 GB-Datei kopiere, dauert das rund 30 Sekunden.
Mit 256 KB Buffer 40 Sekunden.
Mit einem 100 MB Buffer 22 Sekunden - genau so schnell wie Windows.

Aber bei 100 MB merkt man, dass die ProgressBar sich beim Aktualisieren anders verhält. Es werden keine kleinen Sprünge mehr gemacht sondern jede Sekunde ein großer.
Ein 50 MB Buffer ist auch OK und eine 1 GB Datei ist nach 22 bis 23 Sekunden kopiert.

Wenn man ReadFile und WriteFile nimmt, dann ist ein 100 MB Buffer am schnellsten. je kleiner, desto länger dauert es.
Ich lese von einer mechanischen HDD und schreibe auf genau dieselbe für meine Tests.

Der beste Buffer scheint also irgendwo zwischen 30 und 50 MB zu liegen. jedenfalls für HDDs. Bei guten SSDs kann man meiner Meinung nach bei 100 MB anfangen.

Geändert von DieDolly ( 3. Aug 2018 um 13:39 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

AW: Dateien performant mit Callback kopieren

  Alt 3. Aug 2018, 13:42
[OT]
Zitat:
dass die ProgressBar sich beim Aktualisieren anders verhält
Man sollte nur zulassen das sich die Progressbar aktualisiert wenn sich die Daten verändert haben der Performance wegen.
Ob du das tust weis ich leider nicht.

Aber hier ein Beispiel.

Delphi-Quellcode:
    Progress := trunc(100 * (Bass_ChannelGetPosition(Channel, BASS_POS_BYTE) / Bass_ChannelGetLength
          (Channel, BASS_POS_BYTE)));

    if (ProgressBar.Value <> Progress) then
      ProgressBar.Value := Progress;
[/OT]

Zitat:
Abgesehen von kopieren...
Und darum ging es mir.. also doch logisch

gruss
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.154 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: Dateien performant mit Callback kopieren

  Alt 3. Aug 2018, 13:43
Der beste Buffer scheint also irgendwo zwischen 30 und 50 MB zu liegen. jedenfalls für HDDs. Bei guten SSDs kann man meiner Meinung nach bei 100 MB anfangen.
Das Buffer solle immer aligned sein und zur Sektor-Größe passen.

Siehe
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.154 Beiträge
 
Delphi 10.3 Rio
 
#9

AW: Dateien performant mit Callback kopieren

  Alt 3. Aug 2018, 13:47
Wenn ich ohne Buffering von Windows und einer Buffergröße von 10 MB bei ReadFile eine 1 GB-Datei kopiere, dauert das rund 30 Sekunden.
Mit 256 KB Buffer 40 Sekunden.
Mit einem 100 MB Buffer 22 Sekunden - genau so schnell wie Windows.
Dazu hätte ich gerne mal Dein Testprogramm...
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.154 Beiträge
 
Delphi 10.3 Rio
 
#10

AW: Dateien performant mit Callback kopieren

  Alt 3. Aug 2018, 13:40
Nein. Ich denke das ist logisch..
Nöö, das ist alles andere als logisch... Abgesehen von kopieren...

Schau mal hier - OK andere Aufgabenstellung.

Natives lesen ist langsamer als aus einer Datenbank - also ich hätte gewettet das der Datenbankoverhead das ganze viel langsamer macht.
  Mit Zitat antworten Zitat
Antwort Antwort


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:46 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