问题描述
所以我的“落沙”模拟游戏中有一个粒子,它们存储在数组(网格)中,其中一些粒子包含诸如 id(水、沙子等)、温度和 RandomNumberGenerator。
temperatureGrid[]=new byte[w*h];
我将每个粒子的温度存储在那里(如果有的话),而不是这样的:
public particle(int x,int y,int temperature,int rng){}
我想知道哪个更快(注意:性能非常重要,我知道我应该主要选择可读性)
解决方法
将所有数据保存在字节数组中的速度更快,原因有很多,包括缓存局部性、更少的间接性。
使用对象可以让代码更具可读性和可维护性。如果您使用的是 Java,则意味着性能不是 问题。尽管如此,JVM 生成的程序非常快。唯一的弱点是内存使用率高,这会给 CPU 缓存带来压力并导致频繁的垃圾回收,从而减慢程序的执行速度。为了在重要的地方提高性能,可以使用一些技巧,例如减少分配和重用对象。