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
靜態與性能無關。如果該字段屬於某個實例,則該字段不能是靜態的。如果它屬於一個類,它必須是靜態的。 –
你的意思是靜態/非靜態還是最終/非最終?在你的例子中,這兩個字段都是靜態的。 –