哪个更快,为每个游戏对象的属性创建一个数组或创建一个具有所有属性的构造函数
Which is faster, creating an array for each game object's attributes or creating a constructor With all the attributes
所以我的“落沙”模拟游戏中有一个粒子,它存储在数组(网格)中,其中一些粒子包含如下信息
id(水、沙子等)、温度和 RandomNumberGenerator。
我创建一个数组来存储该信息:
temperatureGrid[]=new byte[w*h];
我将每个粒子的温度存储在那里(如果有的话),而不是像这样:
public particle(int x, int y, int temperature, int rng){}
我想知道哪个更快(注意:性能非常重要,我知道我应该主要选择可读性)
将所有数据保存在字节数组中速度更快,原因有很多,包括缓存局部性、更少的间接性。
使用对象可以使代码更具可读性、可维护性。如果您使用 Java,这意味着性能不是 的问题。然而,JVM 产生非常快的程序。唯一的弱点是内存使用率高,这会给 CPU 缓存带来压力,并导致频繁的垃圾回收,从而减慢程序的执行速度。为了在重要的地方提高性能,可以采用一些技巧,例如减少分配和重用对象。
所以我的“落沙”模拟游戏中有一个粒子,它存储在数组(网格)中,其中一些粒子包含如下信息 id(水、沙子等)、温度和 RandomNumberGenerator。
我创建一个数组来存储该信息:
temperatureGrid[]=new byte[w*h];
我将每个粒子的温度存储在那里(如果有的话),而不是像这样:
public particle(int x, int y, int temperature, int rng){}
我想知道哪个更快(注意:性能非常重要,我知道我应该主要选择可读性)
将所有数据保存在字节数组中速度更快,原因有很多,包括缓存局部性、更少的间接性。
使用对象可以使代码更具可读性、可维护性。如果您使用 Java,这意味着性能不是 的问题。然而,JVM 产生非常快的程序。唯一的弱点是内存使用率高,这会给 CPU 缓存带来压力,并导致频繁的垃圾回收,从而减慢程序的执行速度。为了在重要的地方提高性能,可以采用一些技巧,例如减少分配和重用对象。