Frage

Ist es mit einer Art Algorithmus oder ähnlichem möglich, eine mobile Automata zu beschleunigen? Ich benutze Die Implementierung eines Conway -Spiels der Lebens in XNA Und es funktioniert perfekt, aber das Problem ist, dass wenn ich ein Gitter mehr als 128x128 -Zellen verwende, furchtbar langsam wird.

Ich glaube nicht viel der Berechnung.

Natürlich sollte eine ideale zelluläre Automata unendlich groß sein, aber in Wirklichkeit ist dies unmöglich. Aber 128x128 ist einfach zu klein, um tatsächlich zu sehen, wie sich das System verhält, meiner Meinung nach.

Jede Hilfe wäre sehr geschätzt!

War es hilfreich?

Lösung

Wenn du Versuche dies Ein paar Mal werden Sie sehen, wohin die Zeit geht.

Man sollte nicht raten, aber ich vermute, dass die ganze Zeit in das Rendering geht. Die Bewertung von Nachbarn mag wie viele Code aussehen, aber es besteht die Wahrscheinlichkeit, dass es extrem einfach ist. Wenn Sie eine Möglichkeit haben, Zellen erneut zu rendern, die sich nicht geändert haben, kann dies viel sparen.

Andere Tipps

Ich würde es empfehlen, OpenGL und GLSL zu verwenden. Auf diese Weise können Sie die Datenübertragung von CPU zu GPU beseitigen und eine schöne Beschleunigung von 10x oder mehr erhalten.

Der Hashlife-Algorithmus verwendet Quadbäume, Hashing und Auswendiglernen, um die Zeit und den Raum der CA für eine massive Leistungserhöhung zu komprimieren. Kasse Golly für eine Beispielimplementierung.

Ich versuche immer noch, es selbst herauszufinden und nach guten Bibliotheken zu suchen.

Hier gibt es eine gute Erklärung (mit Beispielcode): http://www.drdobbs.com/jvm/an-algorithm-for-compress-space-t/184406478.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top