【发布时间】:2018-05-26 06:58:11
【问题描述】:
我正在尝试制作一个玩家只能在他们周围小范围内看到的游戏。我试图通过覆盖 500X500 显示器和 1X1 黑色像素来做到这一点,我可以将其设置为活动或非活动。问题在于,当程序启动时,使用标准 for 循环添加它们需要大量时间,并且会减慢整个过程。有什么解决办法吗?
pix 对象有两个参数(int x, int y)
代码
public ArrayList<Pix> pixs= new ArrayList<>();
for(int i = 0; i<=500; i++)
{
for(int ii = 0; ii<=500; ii++)
{
pixs.add(new Pix(ii,i));
}
}
【问题讨论】:
-
您确定减速是这种循环而不是它的处理方式吗?您也可以尝试对循环进行分区并并行运行多个部分。
-
不要对循环说坏话。 (你的意思是“标准”而不是“诽谤”?)
-
你的 Pix 类是什么样的。您正在构建 250000 个 PIx 实例,因此这可能需要一些时间。根据类的外观,您可能可以使用原语来代替。
-
例如,如果您的所有 Pix 类都包含 2 个整数,即 x 和 y,请考虑使用一个二维布尔数组。例如boolean[][] pixs = new boolean[500][500];
-
旁注(尽管与构建所有实例相比可能可以忽略不计):由于您事先知道列表的大小,因此可以使用适当的容量
new ArrayList<>(500*500)对其进行初始化。这将避免动态增长列表的开销。
标签: java optimization arraylist