【发布时间】:2011-06-21 11:43:52
【问题描述】:
我有一个向量向量,我正在尝试按如下方式对其进行初始化:
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 优化级别和默认标准。
【问题讨论】:
-
什么编译器,你正在编译优化?
-
您使用的是哪个版本的 C++ 标准?
-
分配一大块而不是 10000 个较小的块,您可能会看到一些改进。请注意,在 32 位 Windows 中,您将无法容纳超过两个(或三个具有特殊配置的)。它
标签: c++ performance vector initialization