Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: Zeitunterschiede der Befehle, u.a. Case und If

  Alt 5. Apr 2005, 16:46
Zitat von LiS:
ich arbeite zur zeit an einem 4Gewinnt-Spiel mit künstlicher Intelligenz, bei der der Computer eine Menge rechnen muss. Deshalb möchte ich die Befehle natürlich möglichst so schreiben, dass der Computer möglichst wenig Zeit braucht. Die Befehle werden nämlich bei der Berechnung bis zu über 100Millionen mal durchgegangen.
Du würdest viel Zeit sparen, wenn du schlechte Züge frühzeitig eliminierst.
Schau mal ganz unten auf
http://www.enzilex.de/index.php/Alpha-Beta-Suche
das zeigt wieviel Potential in einem besseren Algorythmus steckt.

Zitat von LiS:
Deshalb würde mich interessieren, ob es Zeitunterschiede zwischen der If- und der Case-Anweisung oder zwischen der For-, der Repeat-Until- und der While-Schleife gibt, und welche schneller sind. Wer noch andere Befehle kennt, bitte auch rein schreiben, danke!
For-Schleifen sind am Schnellsten, weil das Decrementieren eines Zähler und Auswerten des Zero-Bits sehr fix geht.
Repeat und While-Schleife sind gleichwertig (bei Repeat-Until wird der Schleifenkörper aber min. einmal ausgeführt)
Case-Anweisungen werden schneller, wenn man die wahrscheinlichsten Werte an den Anfang stellt.
Wenn eine lückenlose Sprungtabelle aufgebaut wird, kann ein geschachtelter Case schneller sein:

Delphi-Quellcode:
case x of
   100..109:

   
   case x of
     100: ;
     101: ;
     102: ;
     ...
     109: ;
   end;

   1000: ;
   1050: ;
end;
Andreas
  Mit Zitat antworten Zitat