矢量的初始化非常缓慢

Initialization of vector of vector is very slow

本文关键字:非常 缓慢 初始化      更新时间:2023-10-16

我有一个向量的向量,我正试图按如下方式初始化它:

vector<vector<float> > matrix(numberOfRows, vector<float> (numberOfCols));

但这一行持续约0.89,其中行数和列数为:

const uint32_t numRows = 10000;
const uint32_t numCols = 20000;

而用以下代码初始化动力学阵列需要0.04秒才能执行:

float **matrix = new float*[numberOfRows];
for (size_t i = 0; i < numberOfRows; ++i)
    matrix[i] = new float[numberOfCols];

我做错了什么吗?有没有更快的方法来初始化向量?

编辑:

至于问题:

我使用g++-4.5来测试使用默认标准的O3优化级别。

不同之处在于向量被初始化为零,而动态数组则没有。价值2亿,这是值得注意的。

通过在初始化中不展开列,可以选择延迟矢量行的初始化,直到有实值可分配给它们。