AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Delphi vs. Windows, warum kopiert Windows schneller?
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi vs. Windows, warum kopiert Windows schneller?

Ein Thema von Angel4585 · begonnen am 1. Dez 2009 · letzter Beitrag vom 7. Dez 2009
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von himitsu
himitsu

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

Re: Delphi vs. Windows, warum kopiert Windows schneller?

  Alt 2. Dez 2009, 07:13
Zitat von sx2008:
Ab einer bestimmten Puffergrösse (8kB, 16kB oder 32kB) bringt ein grösserer Puffer keine Verbesserung.
64kB oder 128kB bringen nach meiner Erfahrung nicht mehr als 32kB.
jupp

bei mir liegen die nach eigenen Erfahrungen/Testmessungen auch so in diesem Bereich.
unter 4 bzw. 8 KB bremst es nur
und über 64 KB bringt es maximal für größere Kopieroperationen auf einem schnellen Datenträger, welcher aber 'ne gewisse (scheiße, wie hieß das nochmal) "Sprungzeit" (z.B. bei der Festplatte, wo der Schreib-/Lesekopf erstmal rumwandern muß) braucht.
für Speicherkarten kommt es drauf an ... mit Nutzung der WindowsFileCache sind die Werte etwa genauso und ohne WFC hängt es von der Geschwindigkeit des Datenträgers ab ... da können sich dann auch mal 8 KB gut machen, da sonst die einzelnen Lese/-Schreibaktionen ziemlich lange dauern können.

Darum ist in meinem Filesplitte auch mal ausnahmsweise ein größerer Puffer drinnen, aber sonst nehm ich oftmals die 64 KB grenze der Windows Speicherverwaltung.
(diese kann zwar in 4 KB-Schritten Blöcke reservieren, aber diese nur in 64 KB-Schritten in unserem virtuellen Speicherraum verwalten)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#12

Re: Delphi vs. Windows, warum kopiert Windows schneller?

  Alt 2. Dez 2009, 07:17
Ab welcher Windowsversion gilt diese 64K Grenze?
Das ganze sollte nämlich auch unter Windows 2000 noch gut laufen
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Delphi vs. Windows, warum kopiert Windows schneller?

  Alt 2. Dez 2009, 07:25
diese "entstand" im Grunde mit Einführung des WinNT-Systems ... also seit Windows NT und fast allen Nachfolgern (Serversysteme können da schonmal anders und mit größeren Werten aufwarten)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#14

Re: Delphi vs. Windows, warum kopiert Windows schneller?

  Alt 2. Dez 2009, 21:28
Mark Russinovich hat über die verbesserte Kopierroutine in Vista SP1 berichtet:
http://blogs.technet.com/markrussino...4/2826167.aspx
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#15

Re: Delphi vs. Windows, warum kopiert Windows schneller?

  Alt 3. Dez 2009, 07:06
Naja das sollte halt auf allen Windows-Systemen seit Windows 2000 laufen.
Aber dass der Unterschied so groß ist zwischen 8K Blöcken und 64K Blöcken ist schon heftig
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Delphi vs. Windows, warum kopiert Windows schneller?

  Alt 3. Dez 2009, 07:10
nja, wenn z.B. der WFC seine Datein in 64-KB-Blöcken verwalten würde, dann sollte man ihn auch besser damit füttern, da er ja bei kleineren Stückchen erstmal den Fehlenden Teil von der Festplatte lesen, um sich einen ganzen Block zu basteln und dann die Einzelstücke auch jeweils zusammenzusetzen müßte, statt einfach nur den "fertigen" Block anzunehmen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#17

Re: Delphi vs. Windows, warum kopiert Windows schneller?

  Alt 4. Dez 2009, 12:52
Wichtig ist auch mit welchen Parametern fFrom und fTo geöffnet werden.
Schließt man den Cache aus, kann das Schreiben auf bestimmten Medien ohne weiteres um den Fakto 100 langsamer sein.
Mit Cache reicht für otimale Geschwindigkeit eine Blockgröße von 8..16 KByte.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Delphi vs. Windows, warum kopiert Windows schneller?

  Alt 4. Dez 2009, 13:11
langsamer ist es ohne Cache nicht unbedingt ... nur weil die Daten im Cache liegen und die Kopieroperation "fertig" meldet, ist es noch lange nicht fertig ... ihr kennt doch bestimmt die USB-Sticks, welche danach noch minutenlang rumblinken, weil der Cache ja noch geleert werden werden muß.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

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

Re: Delphi vs. Windows, warum kopiert Windows schneller?

  Alt 4. Dez 2009, 13:20
Hi!

Warum machst Du es nicht so?

Delphi-Quellcode:
Procedure FileCopy(Source,Dest:String);
var
  OpStruc: TSHFileOpStruct;
  frombuf, tobuf: Array [0..128] of Char;
Begin
{$IFNDEF DLL}
  fillChar( OpStruc, Sizeof(OpStruc), 0 );
  FillChar( frombuf, Sizeof(frombuf), 0 );
  FillChar( tobuf, Sizeof(tobuf), 0 );
  StrPCopy( frombuf, Source );
  StrPCopy( tobuf, Dest );
  With OpStruc DO Begin
    Wnd:= Form1.Handle;
    wFunc:= FO_COPY;
    pFrom:= @frombuf;
    pTo:=@tobuf;
    fFlags:= FOF_NOCONFIRMATION or FOF_RENAMEONCOLLISION;
    fAnyOperationsAborted:= False;
    hNameMappings:= Nil;
    lpszProgressTitle:= Nil;
  end;
  ShFileOperation( OpStruc );
{$ELSE}
Messagedlg('Operation in DLL nicht mölich',mterror,[mbok],0);
{$ENDIF}
end;
Mavarik
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Delphi vs. Windows, warum kopiert Windows schneller?

  Alt 4. Dez 2009, 13:27
ich mag Fehlerbehandlungen und Rückgabewerte und unnötige Puffer müssen auch nicht unbedingt sein
PS: 128-2 = 126 Zeichen sollten etwas kurz sein ... wenn, dann sollte der Puffer schon mindestens MAX_PATH+1 sein
Delphi-Quellcode:
Function FileCopy(const Source, Dest: String): Integer;
var
  OpStruc: TSHFileOpStruct;
Begin
  fillChar( OpStruc, Sizeof(OpStruc), 0 );
  With OpStruc DO Begin
    Wnd := Form1.Handle; // oder Application.Handle oder Nil
    wFunc := FO_COPY;
    pFrom := PChar(Source + #0); // da Liste mit #0#0 abgeschlosen wird
    pTo := PChar(Dest + #0);
    fFlags := FOF_NOCONFIRMATION or FOF_RENAMEONCOLLISION;
    fAnyOperationsAborted := False;
    hNameMappings := Nil;
    lpszProgressTitle := Nil;
  end;
  Result := ShFileOperation( OpStruc );
end;
im Notfall geht's auch so (aber Ersteres sollte schon gehn):
Delphi-Quellcode:
Function FileCopy(Source, Dest: String): Integer;
var
  OpStruc: TSHFileOpStruct;
Begin
  Source := Source + #0
  Dest := Dest + #0;
  fillChar( OpStruc, Sizeof(OpStruc), 0 );
  With OpStruc DO Begin
    Wnd := Form1.Handle; // oder Application.Handle oder Nil
    wFunc := FO_COPY;
    pFrom := PChar(Source);
    pTo := PChar(Dest);
    fFlags := FOF_NOCONFIRMATION or FOF_RENAMEONCOLLISION;
    fAnyOperationsAborted := False;
    hNameMappings := Nil;
    lpszProgressTitle := Nil;
  end;
  Result := ShFileOperation( OpStruc );
end;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 03:57 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