是否有可能通过某种算法或类似的东西来加速元胞自动机?我正在使用在 XNA 中制作的 Conway 的 Game of Life 实现,它运行良好,但问题是当我使用大于 128x128 单元格的网格时,它变得非常慢。
我不认为这与代码或 XNA 如何处理纹理和绘图有关,但更新这么多单元(即评估每个单元的邻居并基于获得其新状态)这一事实需要大量计算.
当然,理想的元胞自动机应该无限大,但实际上这是不可能的。但在我看来,128x128 太小了,无法真正看到系统的行为方式。
任何帮助将不胜感激!
是否有可能通过某种算法或类似的东西来加速元胞自动机?我正在使用在 XNA 中制作的 Conway 的 Game of Life 实现,它运行良好,但问题是当我使用大于 128x128 单元格的网格时,它变得非常慢。
我不认为这与代码或 XNA 如何处理纹理和绘图有关,但更新这么多单元(即评估每个单元的邻居并基于获得其新状态)这一事实需要大量计算.
当然,理想的元胞自动机应该无限大,但实际上这是不可能的。但在我看来,128x128 太小了,无法真正看到系统的行为方式。
任何帮助将不胜感激!
如果您尝试几次,您会看到时间都花在了哪里。
不应该猜测,但我的猜测基本上是所有时间都用于渲染。邻居的评估可能看起来像很多代码,但很可能它非常简单。如果您有办法避免重新渲染未更改的单元格,那可能会节省很多。
我会推荐使用 OpenGL 和 GLSL。通过这种方式,您可以消除从 cpu 到 gpu 的数据传输,并获得 10 倍或更多的良好加速。