Einzelnen Beitrag anzeigen

Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#2

Re: Compileroptimierung: Was passiert?

  Alt 28. Okt 2005, 07:23
Kann jetzt nicht alles im Detail beantworten. Aber ein paar Sachen schon.

inc(i) ist besser als i:=i+1. Da bei dem zweiten Konstrukt quasi eine temporäre Variable erzeugt wird und bei inc direkt der speicherbereich der Variablen um 1 erhöht wird.

Das mit result resultiert glaube daraus, dass diese immer im einem Register abgelegt wird. Bedeutet also, wenn du direkt in der ersten Zeile der Funktion result:=1 schreibst, dann wird das register bis zum Prozedur ende belegt und steht für Schleifen nicht mehr zur Verfügung.

Bei div und / liegt der unterschied in den Assembler Anweisungen. Bei / wird die FPU genutzt (muss ja) und diese ist langsamer als die Integer-Division.

Sicherlich sind Pointer auf einen Array-Eintrag besser. Aber in einer Konstruktion wie

Delphi-Quellcode:
for i:=0 to 10 do
  Arr[i]:=10;
erzeugt Delphi automatisch einen Pointer und zählt diesen immer hoch bzw. runter. Bei schleifen wird nämlich immer versucht eine Prüfung gen 0 zu erreichen, da diese schneller ist als die Prüfung gegen 10.

Naja erstmal ein paar Sachen für den Anfang
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat