矢量矢量的初始化非常慢

时间:2011-06-21 11:43:53

标签: c++ performance vector initialization

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

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

但是这一行持续约0.89,其中numberOfRows和numberOfCols是:

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优化级别。

1 个答案:

答案 0 :(得分:9)

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

您可以选择延迟矢量行的初始化,直到您有实际值来分配它们,方法是不扩展初始化中的列。