簡體   English   中英

對象的快速替代

[英]Fast alternative to objects

我正在編寫一個類似立方體素的游戲,並希望獲得更多性能。 目前我創建這樣的立方體

for (size_t i = 0; i < 20000; i++)
    {
        objects* cube = new objects;
        cube->position.x = 
         ----------
        cubes.push_back(cube);

    }

然后我遍歷所有對象以更改它們的位置和內容並使用

for (auto& cube : cubes)
{
    //change cubes position stuff etc
}

問題是,一旦我生成 100,000 個立方體,我的游戲就會開始滯后。 過去我做過類似的事情,我使用 java 並且能夠以 2,000,000 的速度生成並達到 5fps 左右,但我丟失了代碼,但我知道我當前的代碼可以優化。

所以我考慮了這么多,我想到了這個而不是使用對象

float world[maxworldlength][maxworldlength][cubesperchunk][cubesperchunk][cubesperchunkdeph][x][y][z];

在這里,我可以將我的世界中的所有對象放在一個列表中,並且可以輕松訪問任何沒有循環等的屬性,並且由於數據全部放在一起,對於 cpu 來說可能更快。 但是我對此進行了更多考慮,並考慮了這將使用多少內存。 經過一些簡單的數學運算 ((32 * 10) * (32 * 10) * (32 * 16) * (32 * 16) * (32 * 50) * (32 * 50)) / 1000000000。我發現數組會使用超過 68719476 GB 的內存。 所以我不得不放棄這個想法。

任何人都知道我如何存儲大量性能影響較小的對象。 謝謝你的幫助/。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM