小编Kev*_*in 的帖子

添加未使用的内存时性能下降

当我偶然发现这种奇怪的性能下降时,我正在玩一个简单的“游戏”来测试面向数据设计的不同方面。

我有这个结构来存储游戏船舶的数据:

constexpr int MAX_ENEMY_SHIPS = 4000000;
struct Ships
{
    int32_t count;
    v2 pos[MAX_ENEMY_SHIPS];
    ShipMovement movements[MAX_ENEMY_SHIPS];
    ShipDrawing drawings[MAX_ENEMY_SHIPS];
    //ShipOtherData other[MAX_ENEMY_SHIPS]; 

    void Add(Ship ship)
    {
        pos[count] = ship.pos;
        movements[count] = { ship.dir, ship.speed };  
        drawings[count] = { ship.size, ship.color };
        //other[count] = { ship.a, ship.b, ship.c, ship.d };
        count++;
    }
};
Run Code Online (Sandbox Code Playgroud)

然后我有一个函数来更新运动数据:

void MoveShips(v2* positions, ShipMovement* movements, int count)
{
    ScopeBenchmark bench("Move Ships");
    for(int i = 0; i < count; ++i)
    {
        positions[i] = positions[i] + (movements[i].dir * movements[i].speed);
    }
} …
Run Code Online (Sandbox Code Playgroud)

c++ optimization data-oriented-design

3
推荐指数
1
解决办法
122
查看次数

标签 统计

c++ ×1

data-oriented-design ×1

optimization ×1