Danke für die vielen Antworten.
@Nox:
Ich hätte eine Frage zu einer Codezeile:
|
C-/C++-Quelltext
|
1
|
if(x+counter,y+counter ist nicht mehr im Feld || Stein(x+counter,y+counter) != Stein(x,y) )
|
Was genau ist der Sinn dieser Zeile (die ja nicht wirklich Code ist, ich schätze du hast irgendwo ein "//" vergessen), bzw der Funktion Stein (oder war hier das Array gemeint?)
Des Weiteren bin ich mir nicht ganz sicher, was diesen deinen Algorithmus (wenn man das denn so nennen kann) schneller macht als meinen.
Eine kurze Erklärung wäre nett.
Die Aufteilung in Funktionen, welche mir am ehesten auffällt, bringt, auch wenn ich glaube dass sie dank der Kürze sowieso implizit Inline sind, nicht
unbedingt einen Geschwindigkeitsvorteil, oder?
Ich verstehe auch ein paar andere Dinge nicht ganz, doch ich denke, das hängt mit der ominösen Codezeile oben zusammen.
Die Idee mit dem Counter kam mir auch zuallererst, ich hatte sie sogar beinahe fertig implementiert, nur aus irgendeinem Grund verworfen.
Prinzipiell gesehen ist deine Idee und die Idee meiner if-Abfragen gar nicht so grundverschieden, nur dass du das Ganze per Schleife umgesetzt, (woran ich scheinbar gescheitert bin), auf jeweils einen Stein beschränkt, sowie eine Arraygrenzen-Überprüfung eingebaut hast.
Bezüglich der Arrayüberschreitung: Normalerweise gibt es im Debugmodus von MVC++ ja eine Exception, dass eine Bereichsüberschreitung aufgetreten ist, oder gilt das nur bei dynamisch auf dem Heap erzeugt Objekten?
Bei anderen Programmen vermeide ich es auch, nur hier habe ich (speziell mit meiner Implementierung) ein Problem damit.
@jojendersie:
Deine Lösung gefällt mir auch, obwohl ich auch hier nicht genau festmachen kann, wo der Geschwindigkeitsvorteil liegt.
Entschuldigt bitte, wenn ich diesbezüglich nicht so ganz Bescheid weiß.
Im Allgemeinen wäre ich auch dankbar, wenn mir jemand sagen könnte, wie sich die einzelnen Dinge auf die Geschwindigkeit auswirken.
Arithmethische Operationen sind Milliardenmal in der Sekunde möglich, doch wie sieht es da (im Verhältnis) mit if-Abfragen und Schleifen aus?
Insbesondere bei diesen kommt es vermutlich stark auf die geprüfte(n) Bedingungen(n) bzw. den jeweils wiederholten Code ankommt, was eine allgemeine Einstufung wohl erschwert. Trotzdem würde ich gerne wissen, wie sich solche Schleifen und Bedingungen auf die Performance eines Programms auswirken.
Ich weiß es sind viele Fragen, aber ich hoffe es findet sich jemand sie zumindestens teilweise beantworten kann.
Danke im Voraus.