我编写的程序需要检查2D数组中的数百万个点,以查看它们是否不为null。这是我正在使用的代码:

Particle *particleGrid[1920][1080];
bool Sensor::checkForParticle(int x, int y) {
    if (x > 1920 || x < 0) return 0;
    if (y > 1080 || y < 0) return 0;
    if (mainController->particleGrid[x][y] != NULL) {
        return 1;
    }
    return 0;
}


该函数在整个应用程序中使用的CPU最多(该函数占应用程序CPU使用率的70%),甚至比我对Bresenham线描算法的实现要多(示例函数在生成的线的每个点上都被调用)通过Bresenham算法)。是否有更有效的CPU执行空检查操作的方法?

最佳答案

如果在循环中调用它,则无需检查参数就可以逃脱。当您检查内存位置中的数据关闭时,它也将以更快的速度排在第一位,这将减少缓存命中率。

关于c++ - 在C++中检查数组位置是否为null的CPU有效方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20746765/

10-11 23:04
查看更多