Вопрос

Возможно ли, с каким -то алгоритмом или чем -то в этом роде ускорить сотовые автоматы? я использую Игра в Conway в реализации жизни, сделанная в XNA И это работает отлично, но проблема в том, что когда я использую сетку, более 128x128 ячейки, она становится ужасно медленной.

Я не думаю, что связан с кодом или тем, как XNA обрабатывает текстуры и рисунок, но тот факт, что обновление так много ячеек (т.е. оценивает каждый из соседей ячейки и основываясь на получении своего нового состояния), это много вычислений.

Конечно, идеальные сотовые автоматы должны быть бесконечно большими, но на самом деле это невозможно сделать. Но 128x128 слишком мал, чтобы увидеть, как ведет себя система, на мой взгляд.

Любая помощь будет очень оценена!

Это было полезно?

Решение

если ты попробуй это Несколько раз вы увидите, куда пройдет время.

Не нужно догадываться, но я думаю, по сути, все время уходит в рендеринг. Оценка соседей может выглядеть как много кода, но, скорее всего, это очень просто. Если у вас есть способ избежать повторного использования ячеек, которые не изменились, это может многое спасти.

Другие советы

Я бы рекомендовал использовать OpenGL и GLSL. Таким образом, вы можете устранить передачу данных от процессора в графический процессор и получить хорошее ускорение в 10 раз или более.

Алгоритм Hashlife использует четырехместные деревья, хеширование и запоминание для сжатия времени и пространства CA для массового повышения производительности. Проверить Не так Для примера реализации.

Я все еще пытаюсь понять это сам и ищу хорошие библиотеки.

Здесь есть хорошее объяснение (с примером кода): http://www.drdobbs.com/jvm/an-algorithm-for-compressing-space-and-t/184406478.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top