哪个更快,为每个游戏对象的属性创建一个数组或创建一个带有所有属性的构造函数

问题描述

所以我的“落沙”模拟游戏中有一个粒子,它们存储在数组(网格)中,其中一些粒子包含诸如 id(水、沙子等)、温度和 RandomNumberGenerator。

我用来存储这些信息的方法是创建一个数组:

temperatureGrid[]=new byte[w*h];

我将每个粒子的温度存储在那里(如果有的话),而不是这样的:

public particle(int x,int y,int temperature,int rng){}

我想知道哪个更快(注意:性能非常重要,我知道我应该主要选择可读性)

解决方法

将所有数据保存在字节数组中的速度更快,原因有很多,包括缓存局部性、更少的间接性。

使用对象可以让代码更具可读性和可维护性。如果您使用的是 Java,则意味着性能不是 问题。尽管如此,JVM 生成的程序非常快。唯一的弱点是内存使用率高,这会给 CPU 缓存带来压力并导致频繁的垃圾回收,从而减慢程序的执行速度。为了在重要的地方提高性能,可以使用一些技巧,例如减少分配和重用对象。