C ++三维数组随机访问性能

时间:2019-06-17 11:35:08

标签: c++ arrays random access

我想提高存储3D地图的应用程序的性能。当前,它使用QtreeNode作为存储地图的结构。但是,访问坐标为x,y,z的随机位置的复杂度为log2n。

我想在90%的时间内将我知道的部分地图存储在定义为的静态数组中:

Tile* tileArray[16][3500][3500] // [z, x, y];

我将z设置为第一维的原因是应用程序迭代通常是逐层和逐行完成的,如下所示:

for (int32_t z = fromZ; z <= toZ; ++z) {
    for (int32_t x = fromZ; x <= toX; ++x) {
       for (int32_t y = fromY; y <= toY; ++y) {
            Tile* accessTile = tileArray[z][x][y];
      }
   }
}

Tile *是指向数据结构的指针,该数据结构包含有关3D地图上该位置的信息。由于系统为64位,指针大小为8byte,因此总共需要1.5GB的RAM。

我想问一下用x,y,z坐标随机访问这样的数组是否有问题。从逻辑上讲,复杂度应为O(1),但我不确定CPU如何计算内存中的确切位置。

我不担心RAM使用过多。

0 个答案:

没有答案