目前正在制作简单的Android SurfaceView基础游戏。有很多这样的电话:
mSplatGraphic[idx] = new Random().nextInt(SPLAT_COUNT);
我的问题是,拥有像这样的“静态随机类”会更好吗?
public class SysRandom {
private static final Random RANDOM = new Random();
public static int nextInt(int limit) {
return RANDOM.nextInt(limit);
}
}
然后使用此代码:
mSplatGraphic[idx] = SysRandom.nextInt(SPLAT_COUNT);
我的想法是,使用简单的类,Random对象只创建一次并且不会被不断地创建和销毁,但是我不确定这是在编译和运行代码后真正发生的事情。
这可能是一个java noob问题,对不起!我是自学成才的,如果有人给我指的是链接,我会很乐意删除这个问题:]
答案 0 :(得分:0)
是的,它会更快,特别是如果将此代码放在循环中因为将创建对象,然后垃圾收集器必须立即收集它。将它放在自己的类中可以提高性能,但不是很大。 Android文档has a page非常适合这种情况。
答案 1 :(得分:0)
就个人而言,我不会使用您建议的任何一个选项。首先,每次需要随机数时都不需要创建新的随机数。这将导致大量不必要的垃圾收集,这会对fps产生负面影响。使用您的SysRandom包装器应该会有所帮助,但我不认为将它包装在该实用程序类中是必要的。就个人而言,我会宣布一个
private final Random rand = new Random()
位于班级顶部,使用mSplatGraphic
。除非您静态访问rand
,否则我不会将其设为静态。