c++ - vector of vector的初始化很慢

标签 c++ performance vector initialization

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

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];

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

编辑:

至于问题:

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

最佳答案

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

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

关于c++ - vector of vector的初始化很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6424698/

相关文章:

asp.net - ASP.NET 应用程序中什么消耗了超过 65% 的时间?

r - 如何测试给定向量是否具有一种类型的三个元素和另一种类型的两个元素

Java 反射方法调用比字段更快地产生结果?

c++ - CUDA:请帮我找出代码中的错误

c++ - C++ 标准是否允许通过 stdin/stdout 读写任意二进制数据?

c++ - Bison 问题 - Start Symbol 不导出任何句子

javascript - 如何展平嵌套引用中的数据?

使用迭代器时 C++ vector 内容未更改

c++ - 使用 vector 查找公共(public)元素的问题

c++ - 以 SVM 作为弱学习器的 Opencv 级联分类器