sys*_*ult 3 c++ performance initialization vector
我有一个向量的向量,我试图初始化它如下:
vector<vector<float> > matrix(numberOfRows, vector<float> (numberOfCols));
Run Code Online (Sandbox Code Playgroud)
但这行约为0.89,其中numberOfRows和numberOfCols为:
const uint32_t numRows = 10000;
const uint32_t numCols = 20000;
Run Code Online (Sandbox Code Playgroud)
而使用以下代码初始化动态数组需要0.04秒来执行:
float **matrix = new float*[numberOfRows];
for (size_t i = 0; i < numberOfRows; ++i)
matrix[i] = new float[numberOfCols];
Run Code Online (Sandbox Code Playgroud)
我做错了有没有更快的方法来初始化该向量?
编辑:
至于问题:
我使用g ++ - 4.5来测试使用默认标准的O3优化级别.
不同之处在于向量初始化为零,而动态数组则不是.拥有2亿个价值,这是值得注意的.
您可以选择延迟矢量行的初始化,直到您有实际值来分配它们,方法是不扩展初始化中的列.
| 归档时间: |
|
| 查看次数: |
867 次 |
| 最近记录: |