Einzelnen Beitrag anzeigen

DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.194 Beiträge
 
Delphi 2007 Architect
 
#1

Achtung. Optimierung beim Compiler

  Alt 8. Jun 2010, 21:44
Delphi-Version: 2005
Hi,

damit eventuell andere nicht in diese falle laufen poste ich mal was passiert wenn man die Optimierung an hat.

Eine gaaanz fiese sache ist, das schleifen rückwärts laufen können. Das spart ein cmp. In meinem fall ist das voll in die hose gegangen.

Beispiel:
Ich habe ein InUse = Array[0..100] of Boolean. Das wird von mehreren Threads genutzt. Und auch wieder frei gegeben. Mein Sourcecode war wie folgt.

Delphi-Quellcode:
for i:=0 to 100 do
begin
  if NOT InUse[i] then ....
end;
Ziel war es von "unten" einen leeren Slot zu suchen. Ich habe fast eine Stunde gebraucht bis ich rausfand das die schleifen rückwärts läuft. Man kann es nur im Assembler sehen.

Ändert man den Sourcecode wie folgt ab, läuft die schleife wieder richtigrum. Also von 0 bis 100

Delphi-Quellcode:
for i:=0 to 100 do
begin
  WriteLn(i);
  if NOT InUse[i] then ....
end;
Ich weiss nicht inwie weit diese sache bekannt ist. Auch habe ich eine frage dazu. Gibt es flags/parameter womit man teile des programms von der optimierung ausschliessen kann?

Gruss und danke im voraus
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat