Ich hab ein kleines schachartiges Programm geschrieben.
Dabei ist mir auf aufgefallen, dass das Programm sich in der Suchroutine anders verhält wenn ich die Delphioptimierung beim compilieren anschalte, als wenn ich diese auslasse.
Dabei ist das Verhalten jeweils reproduzierbar, sowohl die optimierte als auch die unoptimierte Suchfunktion erzielt für sich immer die selben Suchergebnisse. Allerdings unterscheiden sie sich zum Teil recht heftig

Das geht soweit, dass die eine Version einen anderen Zugvorschlag macht als die andere

Das ist natürlich nicht schön, vor allem, weil die optimierte zwar ab und an extrem schneller ist aber dann einfach ganz schlechte Züge macht, Matts nicht findet usw.
Da das Debuggen recht aufwändig ist (oft werden Millionen von Stellungen in einer rekursiven AlphaBeta-Suche erzeugt) und in Verbindung mit dem Optimizer eh nicht gescheit funktioniert

wollt ich mal ein paar Tipps haben auf was ich im Code speziell achten sollte, welche Teile von Optimierer vor allem bearbeitet werden und für das "Fehlverhalten" verantwortlich sein könnten. Denn den Geschwindigkeitsgewinn würd ich schon gerne mitnehmen, es ist schon ein Unterschied ob 100.000 oder 400.000 Stellungen in der Sekunde bearbeitet werden ;)
Moderiert von
Narses: Topic aus Sonstiges (Delphi) verschoben am Do 01.07.2010 um 09:51
mfg. Joel