データ指向設計を使用してキャッシュを可能な限り効率的に使用するようにコードを方向付けようとしていますが、そのようなことについて考えるのは初めてです。画面上にスプライトを描画するのと同じ命令をループする方法を考案しました。この関数に送信されるベクトルには、すべてのゲーム エンティティの位置とスプライトが含まれます。
私の質問は、条件文が命令キャッシュから描画関数を取り除き、それによって私の計画を台無しにすることですか? それとも、私がしていることは一般的に非常識ですか?
struct position
{
position(int x_, int y_):x(x_), y(Y_)
int x,y;
};
vector<position> thePositions;
vector<sprite> theSprites;
vector<int> theNoOfEntities; //eg 3 things, 4 thingies, 36 dodahs
int noOfEntitesTotal;
//invoking the draw function
draw(&thePositions[0], &theSprites[0], &theNoOfEntities[0], noOfEntitesTotal)
void draw(position* thepos, sprite* thesp, int* theints, int totalsize)
{
for(int j=0;int i=0;i<totalsize;i++)
{
j+=i%size[j]?1:0;
thesp[j].draw(thepos[i]);
}
}