AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Verschiedene Möglichkeiten zum Verschieben von Dateien

Verschiedene Möglichkeiten zum Verschieben von Dateien

Ein Thema von Angel4585 · begonnen am 9. Feb 2006 · letzter Beitrag vom 13. Feb 2006
Antwort Antwort
Seite 2 von 3     12 3   
Benutzerbild von H4ndy
H4ndy

Registriert seit: 28. Jun 2003
Ort: Chemnitz
515 Beiträge
 
Delphi XE3 Professional
 
#11

Re: Verschiedene Möglichkeiten zum Verschieben von Dateien

  Alt 9. Feb 2006, 14:22
Da ich mir spontan keine weitere Methode einfällt, geb ich mal einen Kommentar ab:
Ich würde Nr. 2 favorisieren, da dort alles auf Windows-Ebene vonstatten geht.

Die MemoryStream-Methode (Nr. 4) lehne ich sehr ab, da diese
a) Von der Natur des MemoryStreams her Speicher förmlich "frisst"
b) Langsam ist (Windows beginnt schon bei wenigen MB mit Paging [bremst den Einlesevorgang erheblich])
Manuel
  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: Verschiedene Möglichkeiten zum Verschieben von Dateien

  Alt 9. Feb 2006, 14:23
Also die MemoryStream Methode wird ab bestimmten Dateigrößen sehr lahm der Rest ist bisher gut gelaufen. am schnellsten war bisher die QuickCopy geschichte, also das Erste.

Edit
@H4ndy: Windows ist nicht immer gut

Nachtrag zur MemoryStream Methode: bei kleine Dateien bis ca. 30 MB ist das(auf meinem Rechner) die schnellste Methode.
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von H4ndy
H4ndy

Registriert seit: 28. Jun 2003
Ort: Chemnitz
515 Beiträge
 
Delphi XE3 Professional
 
#13

Re: Verschiedene Möglichkeiten zum Verschieben von Dateien

  Alt 9. Feb 2006, 14:29
Zitat von Angel4585:
@H4ndy: Windows ist nicht immer gut
Man kann ja nicht alles haben
Ist aber IMHO die Methode, wo die wenigsten Fehler passieren können.

Wer mehr Kontrolle über den Kopiervorgang braucht, kann ja #1 benutzen.
(Mit nem Block-Lese Algorithmus ist ein Fortschrittsbalken kein Problem)
Manuel
  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
 
#14

Re: Verschiedene Möglichkeiten zum Verschieben von Dateien

  Alt 9. Feb 2006, 14:34
Neue und bisher schnellste(!!!!100000 ms wo andere 160000ms brauchen!!!!) Methode:

Delphi-Quellcode:
function TtfMain.StreamCopy(AVon, ANach : string): Boolean;
var
 stream1,stream2 : TStream;
begin
stream1 := TFileStream.Create(AVon, fmOpenRead);
try
  stream2:= TFileStream.Create(ANach, fmCreate);
  try
    stream2.CopyFrom(Stream1, Stream1.Size);
  finally
    stream2.Free;
  end;
finally
  stream1.Free;
  end;
end;
Edit: UUps : das ist Methode 1 nur ohne try except Block(verlier grad bissl den Überblick.. aber warum ist die so schnell???
Edit2: noch ein Vergleich von 1 und 7 ... beid liegen bei ca 82000... was ist mit meinem Rechner los?? Die anderen brauchen ewig...
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von -=wWw=- AK23
-=wWw=- AK23

Registriert seit: 8. Feb 2006
51 Beiträge
 
Delphi 2006 Architect
 
#15

Re: Verschiedene Möglichkeiten zum Verschieben von Dateien

  Alt 9. Feb 2006, 14:49
Wegen dem Speedtest.

Beende mal alle unötigen prozesse und sag uns mal was du für eine Hardware verwendest.

und wenn du noch so nett wärest ein speed-tester für andere zu machen...
Niklas
"Den Menschen trennt nur eine Sache von den Tieren: Menschen sind bessere Schauspieler."
  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
 
#16

Re: Verschiedene Möglichkeiten zum Verschieben von Dateien

  Alt 9. Feb 2006, 15:12
OK hier hab ich mal das Prog.

Warnung: Benutzung auf eigene Gefahr, ich übernehme keinerlei Haftung für aufkommende Schäden
(Das Programm ist so verbuggt, da musste ich das einfach dazuschreiben)
Angehängte Dateien
Dateityp: exe kopieren_913.exe (505,5 KB, 8x aufgerufen)
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von H4ndy
H4ndy

Registriert seit: 28. Jun 2003
Ort: Chemnitz
515 Beiträge
 
Delphi XE3 Professional
 
#17

Re: Verschiedene Möglichkeiten zum Verschieben von Dateien

  Alt 9. Feb 2006, 15:22
Zitat von Angel4585:
aber warum ist die so schnell???
Edit2: noch ein Vergleich von 1 und 7 ... beid liegen bei ca 82000... was ist mit meinem Rechner los?? Die anderen brauchen ewig...
Das direkte Vergleichen ist immer so eine Sache bei Dateioperationen.
Windows ist nämlich nicht doof und führt einen prefetch durch.
Wenn du ein und die selbe Datei zwei mal hintereinander kopierst,
wird der zweite Kopiervorgang bei 99,99%iger Wahrscheinlichkeit
schneller sein wie der erste. (Zumindest bei meinen Beobachtungen)
Manuel
  Mit Zitat antworten Zitat
Benutzerbild von -=wWw=- AK23
-=wWw=- AK23

Registriert seit: 8. Feb 2006
51 Beiträge
 
Delphi 2006 Architect
 
#18

Re: Verschiedene Möglichkeiten zum Verschieben von Dateien

  Alt 9. Feb 2006, 16:06
OK, ich hab das jetzt getestet.

der 2. versuch IST schneller, da die datei dann schon / noch
im cache liegt.

Für 135.168 Bytes brauch ich bei (Schnellster- /langsamster Versuch):
  • Quickcopy: 31 / 63 MS
  • Copyfile: 29 / 89 MS
  • Fileoperation: 31 / 83 MS
  • Memorystream: 68 / 94 MS
  • JCL Filecopy: 31 / 47 MS
  • AssignFile: 63 / 98 MS
  • Streamfile: 78 / 156 MS

Meine Configs sind:
ASRock K7VT4A+ (größter mist wo gib);
AMD Athlon XP 3000+;
1 GB DDR Ram;
Maxtor 120 GB (7.200 u) IDE;
und Windows XP SP 2.
Niklas
"Den Menschen trennt nur eine Sache von den Tieren: Menschen sind bessere Schauspieler."
  Mit Zitat antworten Zitat
Benutzerbild von H4ndy
H4ndy

Registriert seit: 28. Jun 2003
Ort: Chemnitz
515 Beiträge
 
Delphi XE3 Professional
 
#19

Re: Verschiedene Möglichkeiten zum Verschieben von Dateien

  Alt 9. Feb 2006, 16:15
Ich glaube, die Tests sollten lieber mit großen Dateien durchgeführt werden,
weil dann die Schwankungen nicht bis zu 50% von der Gesammtzeit ausmachen

@Angel4585
Desweiteren würde mich mal interessieren, welche Zeitmessroutine du genommen hast.
GetTickCount könnte hier ungenau werden. Besser wäre hier ein PerformanceCounter.

Edit:
Habs mal selber getestet
Datei: xampp-win32-1.5.1-installer.exe (30.424.567 Bytes, ~29MB)
Virenscanner ist AUS
System: PIII 800MHz, 512MB RAM, WinXP SP2
(Alles Durchschnittswerte nach 4 Versuchen)

QuickCopy: ~1389ms
CopyFile: ~1246ms
FileOperation: ~1284ms
MemoryStream: ~1742ms
JCLFielCopy: ~1238ms
AssignFile: ~2491ms
StreamCopy: ~1312ms


Wie man sieht, sind nur MemoryStream und AssignFile wirklich langsamer
als die anderen Methoden. Desweiteren hab ich Schwanker von bis zu 400ms dabei gehabt.
(Einmal dauerte es sogar nur ~550ms...)

Ich denke mal es ist einfach ne Glaubensfrage, welchen Algo man nimmt ^^
Manuel
  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
 
#20

Re: Verschiedene Möglichkeiten zum Verschieben von Dateien

  Alt 10. Feb 2006, 08:37
Also ich verschieb ne Datei mit 1 GB

und brauche im Schnitt ca 80000 ms für jede der Varianten, ich glaub die Unterschiede kamen nur daher das der Rechner gestern irgendwie gesponnen hat.

Edit: Memory Stream ausgenommen, die braucht 10 mal so lang bei so großen Dateien
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 09:04 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