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 1 von 3  1 23      
Angel4585

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

Delphi vs. Windows, warum kopiert Windows schneller?

  Alt 1. Dez 2009, 14:07
Hallo!

Ich hab keine Ahnung ob ich in der Sparte hier richtig bin, aber im Verschieben seid ihr ja Weltmeister

Ich kopiere eine Datei mit den Methoden BlockRead und BlockWrite.

Eine 50 MB-Datei über Netzwerk braucht per Explorer(STRG+C & STRG+V) ca. 10 Sekunden.
Die gleiche Datei über Netzwerk per BlockRead&BlockWrite braucht ebenfalls 10 Sekunden.
Soweit so gut.

Nun habe ich aber eine MicroSDHC-Karte.
Die 50MB Datei per Explorer dauert ebenfalls ca. 10 Sekunden.
Die 50MB Datei per BlockRead&BlockWrite dauert hier auf einmal knapp ne Minute(57 Sekunden)

Kann mir jemand erklären wie hier dieser Unterschied zustande kommt?
Und kommt mir jetz nich mit Cache
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

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

  Alt 1. Dez 2009, 14:12
Welche Blockgröße liest denn BlockRead/BlockWrite?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

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

  Alt 1. Dez 2009, 14:13
Das ist die Cache (WFC)

Wie kopierst du es denn genau?
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
 
#4

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

  Alt 1. Dez 2009, 14:21
Also ich darf hier nur ausschnitte posten, deshalb mal das relevante:

Delphi-Quellcode:
var
Buf: array[1..8191] of Char;
gel, ges: Integer;
begin
repeat
try
try
BlockRead(fFrom,Buf,SizeOf(buf),gel);
BlockWrite(fTo,buf,gel,ges);
inc(iPos,gel);
except
  //IOError abfangen
  end;
until(gel<>ges)or(gel=0);
end;
Allerdings irritiert mich da selbst gerade warum das buf-Array von 1-8191 geht. Ein Block sollte doch ne Zweierpotenz sein oder?
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

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

  Alt 1. Dez 2009, 14:36
vermutlich ist 0..8191 gemeint

Char macht sich auch gut (dieses ist ab Delphi 2009 aber doppelt so groß)


PS: eigentlich sollte es schneller gehn, immerhin schreibst du ja in den schnellen WFC und nicht direkt auf die Karte.
Wobei ich hier auch eher in bis zu 64 KB-Schritten arbeiten würde.

Muß denn ein Fortschritt angezeigt werden?
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
 
#6

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

  Alt 1. Dez 2009, 14:40
Ja wird ein Fortschritt angezeigt, aber ich hatte testweise schon alles auskommentiert, sodass nurnoch das reine kopieren drin war. Also am Fortschritt liegts nicht.
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#7

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

  Alt 1. Dez 2009, 14:42
Zitat von himitsu:
Char macht sich auch gut (dieses ist ab Delphi 2009 aber doppelt so groß)
Unter C vielleicht, unter Delphi ist es semantisch falsch. Char ist immer ein Glied einer Zeichenkette - und nur mehr oder weniger zufällig unter Delphi<2009 genau ein Byte groß. Der Datentyp "Byte" wäre hier gefragt.

Mal abgesehen davon, was spricht dagegen, einfach direkt die Windows API-Funktionen zu benutzen? (Delphi-Referenz durchsuchenCopyFile)
Die Windowsentwickler werden sich schon einige Gedanken darüber gemacht haben, wie sie ihre Funktionen auf Performance optimieren.
  Mit Zitat antworten Zitat
tkone

Registriert seit: 2. Okt 2009
Ort: Sachsen
63 Beiträge
 
Delphi 7 Professional
 
#8

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

  Alt 1. Dez 2009, 16:26
windows haut anfangs alles was reinpasst in den cache.
dadurch gehts anscheinend schneller
  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
 
#9

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

  Alt 1. Dez 2009, 21:01
Ich hatte es heut mittag nochmal mit nem größeren Buffer getestet und tatsächlich, nimm ich anstatt 8K 64K gehts sehr schnell, innerhalb von 10 Sekunden waren die 50 MB aufm Stick.. bzw auf der Karte.
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#10

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

  Alt 1. Dez 2009, 23:10
Zitat von himitsu:
vermutlich ist 0..8191 gemeint
Das könnte die entscheidende Bremse sein.
Wenn man immer ein Byte zuwenig kopiert ist das sicher schlecht für die Performance.
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.
fork me on Github
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 13:17 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