3
我用Android上的openGL 2D开发游戏。`static`和`non-static`字段在java中有更好的性能Android
这是非常无能获得的性能水平,因为我的看法是复杂的,包含在同一时间300-400对象(游戏循环)。
我知道在java中static
和non-static
领域相当不错:
private final static int NUMBER = 10;
和
private final int NUMBER = 10;
我的问题不是封装(如OO),但性能。
什么是更好的使用性能,static
或non-static
领域。
的想法是,对于大多数我的逻辑我用像元float/int
。
我创造了我所有的“意见”通用超类和这个类必须是在性能范围内更有效:
这里是例子:
/** Sprite sheet definition */
private final int SPRITE_WIDTH = 4;
private final int SPRITE_HEIGHT = 4;
private float mScreenWidth, mScreenHeight, wRatio, hRatio;
private int mFrame = 0;
private int mSwitcher = 0;
private final int TEXTURE_COUNT = 1; // for sprite sheet we use 1 image all the time.
private int[] textures = new int[TEXTURE_COUNT]; // frame animation
protected FloatBuffer vertexBuffer;
private final ESpriteDirection mDirection = ESpriteDirection.TOP_TO_DOWN_LEFT_TO_RIGHT;
public float x, y, initPos, finalPos, initSpeed, currentPos;
private ByteBuffer bb1;
private final int TOTAL_IMAGE_COUNT_IN_SPRITE = SPRITE_WIDTH * SPRITE_HEIGHT;
private FloatBuffer[] floatBufferArray = new FloatBuffer[TOTAL_IMAGE_COUNT_IN_SPRITE];
private float xOffset = 1.0f/SPRITE_WIDTH;
private float yOffset = 1.0f/SPRITE_HEIGHT;
private float vertices[] = {
0.0f,3.0f,0.0f,
0.0f,0.0f,0.0f,
3.0f,3.0f,0.0f,
3.0f,0.0f,0.0f
};
private float storage[][] = new float[TOTAL_IMAGE_COUNT_IN_SPRITE][];
private int[] sprite_X_Indexes = new int[SPRITE_WIDTH];//{1,2,3,4};
private int[] sprite_Y_Indexes = new int[SPRITE_WIDTH];//{1,2,3,4};
我可以猜测,为多个启动同一类static
场比较好,嗯
谢谢
我建议你避免重复到优化是将会使您的设计更糟糕,除非你异形你的应用程序,并发现该问题在访问该领域的依赖。 – mariosangiorgio
静态与性能无关。如果该字段属于某个实例,则该字段不能是静态的。如果它属于一个类,它必须是静态的。 –
你的意思是静态/非静态还是最终/非最终?在你的例子中,这两个字段都是静态的。 –