作为对积分函数的预计算,我需要在大型矩阵上进行一些计算。
for (size_t x = 1; x < size().x(); ++x)
for (size_t y = 0; y < size().y(); ++y)
for (size_t z = 0; z < size().z(); ++z)
field::at(x, y, z) += field::at(x - 1, y, z);
for (size_t x = 0; x < size().x(); ++x)
for (size_t y = 1; y < size().y(); ++y)
for (size_t z = 0; z < size().z(); ++z)
field::at(x, y, z) += field::at(x, y - 1, z);
for (size_t x = 0; x < size().x(); ++x)
for (size_t y = 0; y < size().y(); ++y)
for (size_t z = 1; z < size().z(); ++z)
field::at(x, y, z) += field::at(x, y, z - 1);
我的字段会继承std::vector<size_t>
,其中at
被覆盖
T& at(size_t x, size_t y, size_t z)
{
return container::at(x + y * size().x() + z * size().x() * size().y();
}
以下是我机器上的一些执行时间
对我来说这看起来很慢。
std::vector
是个坏主意吗?我应该将它分成多个(512)子矢量,大小为512x512(每个2M)