Autor Beitrag
opfer.der.genauigkeit
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 754
Erhaltene Danke: 1



BeitragVerfasst: Fr 23.05.03 16:56 
Gibt es Geschwindigkeitsunterschiede bei:

ausblenden Quelltext
1:
2:
 
for i := 0 to bla.count-1 do 'AUFRUF'


und

ausblenden Quelltext
1:
2:
3:
for i := 0 to bla.count-1 do begin
  'AUFRUF'
end;


???

Wenn ja, wirkt sich das bei allen Sachen aus?
Also bei ner IF- Abfrage, Whileschleife, Hundekuchen ?

_________________
Stellen Sie sich bitte Zirkusmusik vor.
BungeeBug
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 901



BeitragVerfasst: Fr 23.05.03 17:13 
Hi,
noe ... zumindest keinene Merkbaren ...


MfG BungeeBug
opfer.der.genauigkeit Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 754
Erhaltene Danke: 1



BeitragVerfasst: Fr 23.05.03 17:18 
Gut, daß man das als Mensch nich merkt hab ich auch beim Programmieren gemerkt. :wink:

Hat jemand vielleicht ne genaue Zahl?

_________________
Stellen Sie sich bitte Zirkusmusik vor.
AndyB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1173
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: Fr 23.05.03 18:38 
begin und end sind nur für den Compiler von Interesse, damit er weiß, wo ein Block beginnt und wo er aufhört. Im Maschinencode wirst du sie nicht wieder finden, womit keine Geschwindigkeitsunterschiede auftreten.

ausblenden Quelltext
1:
for i := 0 to 10 do Something;					

erzeugt Haar genau den selben Maschinencode wie
ausblenden Quelltext
1:
2:
3:
4:
for i := 0 to 10 do
begin
  Something;
end;

_________________
Ist Zeit wirklich Geld?
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Fr 23.05.03 18:47 
Die Geschwindigkeit von Schleifen ist sowieso eine Sache für sich. Diese genau zu bestimmen ist eigentlich unmöglich und eine Schleife schneller zu machen ist genauso schwer.

Vor kurzem haben wir das Thema in Info durchgenommen und in Java die Laufzeit von 2 Schleifen gemessen. Komischerweise war irgendwann die 2. 5mal langsamer, als die erste, obwohl sie total gleich und völlig unabhängig voneinander waren. Hängst also auch vom Compiler ab, ob ein Code wirklich schnell ist.... :(
FriFra
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 557

Win XP Prof, Win XP Home,Win Server 2003,Win 98SE,Win 2000,Win NT4,Win 3.11,Suse Linux 7.3 Prof,Suse Linux 8.0 Prof
D2k5 Prof, D7 Prof, D5 Standard, D3 Prof, K3 Prof
BeitragVerfasst: Sa 24.05.03 10:27 
Schleifen lassen sich schon "beschleunigen", wenn man bei bestimmten Aufgaben, wo man z.B. nur bis zu einem bestimmten Punkt durch die Schleife laufen muss "break" verwendet.
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Sa 24.05.03 13:03 
Hallo,

also wenn du Zahlschleifen beschleunigen willst, dann lasse sie rückwärts laufen. Da in Assembler nur auf 0 abgeprüft werden kann, muss bei hochzähleneden Schleifen auf das Ergebnis einer Rechnung die beim erreichren des Endwertes null ergibt geprüft werden muss.

Bei einfachen sachen wie z.B.
ausblenden Delphi-Quelltext
1:
2:
for i := 0 to bla.count-1 do 
  Machwas;

Optimiert Delphi das von alleine so, dass die Schleife rückwärts läuft. Wenn aber in der Schleiffe auch die Zählvariable verwendet wird und Delphi somit nicht mehr entscheiden kann, ob ein ändern der Laufrichtung nicht die Funktion des Programmes beeinflusst, lässt es dir Finger davon.
Sofern es also möglich ist lasse deine Schleife in die andere Richtung laufen
ausblenden Delphi-Quelltext
1:
2:
for i := bla.count-1 downto 0 do 
  Machwas;


Gruß
Klabautermann