常量引用的性能 - LIBGDX
Performance in constants referencing - LIBGDX
我有很多条件 if´s 和开关来检查和比较位置。每个帧渲染中可能有数千个对常量的引用:
if(sprite.getY>10.2f) accel+=2f;
撇开可读性不谈,像下面这样的几千行会比上面那几千行快吗?
public static final float MINYPOS = 10.2f;
public static final float ACCELY = 2f;
.....
if(sprite.getY>MINYPOS) accel+=ACCELY;
任何合理的 Java 编译器都会内联常量(参见 is it possible to disable javac's inlining of static final variables?,它询问如何阻止它发生)。
不过,一般来说,您希望根据测得的性能问题进行优化。从构建您知道有效的代码开始(因为这是困难的部分)。一旦它起作用,您就可以使用工具对其进行测量并决定是否需要对其进行优化(通常不需要)。
我有很多条件 if´s 和开关来检查和比较位置。每个帧渲染中可能有数千个对常量的引用:
if(sprite.getY>10.2f) accel+=2f;
撇开可读性不谈,像下面这样的几千行会比上面那几千行快吗?
public static final float MINYPOS = 10.2f;
public static final float ACCELY = 2f;
.....
if(sprite.getY>MINYPOS) accel+=ACCELY;
任何合理的 Java 编译器都会内联常量(参见 is it possible to disable javac's inlining of static final variables?,它询问如何阻止它发生)。
不过,一般来说,您希望根据测得的性能问题进行优化。从构建您知道有效的代码开始(因为这是困难的部分)。一旦它起作用,您就可以使用工具对其进行测量并决定是否需要对其进行优化(通常不需要)。