C++优化定义多维向量的性能
C++ Optimize performance defining multidimensional vector
我对这个代码的细化时间有问题
vector <int> empty_a(120, 0);
vector <vector <int>> empty_b(130, empty_a);
vector <vector <vector <int>>> empty_c(220000, empty_b);
vector <vector <vector <vector <int>>>> res(3);
res[0] = empty_c;
res[1] = empty_c;
res[2] = empty_c;
这是我所知道的定义res等于empty_c的最快方法。这花了太多时间。也在:
vector <vector <vector <int>>> empty_c(220000, empty_b);
花很多时间。
有最快的路吗?我也使用-O3选项。
谢谢
假设int是4个字节,则此向量至少表示13 GB。
对于我能想到的大多数应用程序来说,这是非常大的。
很可能你可以通过稀疏数组逃脱惩罚。如果没有,一旦你达到这样的大小,只需分配一个向量,并使用从3D到1D的映射,比如:
std::vector<int> flat(220000*120*130);
size_t At(size_t x, size_t y, size_t z) { return 120*130*z + 120*y+ x;}
flat[At(x,y,z)] = someValue;
或者使用一个专门的库来处理所有这些。
相关文章:
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 写入向量<向量<bool>>
- 函数向量_指针有不同的原型,我可以构建一个吗
- C 指针向量如何影响性能
- 在将其尺寸较大的向量移动到容量较小的向量之前,是否可以通过使用Reserve()来提高代码性能
- 比较两个排序的数字向量(性能优先)
- 为什么这个普通的数组实现比STD ::向量实现性能慢
- 几对性能问题(一个较大的向量与较小的块向量),值得存储迭代索引以进行矢量访问
- 与英特尔相比,GNU C++编译器在对向量进行排序时性能较差
- 如果构建和破坏了许多向量,自定义分配器会提高性能<T>吗?
- 指针向量与值向量 大内存块与小内存块的性能损失
- 以最大性能将双精度的向量截断为单精度
- GPU上计算特征值和特征向量的性能较差
- 使用 static_cast 处理混合(基础和派生)对象的向量是否存在性能风险?(又名 "it this a dumb idea?" )
- 列表排序和结构体向量排序之间的性能差距.c++
- 向量,矩阵和四元数的缓存性能
- 对象,引用对象,引用带函数和不带函数的向量元素-观察到的性能差异
- 在并行追加时,使用向量列表和向量的向量对性能的影响
- [ 性能]--- 字符串::运算符+= 与向量<char>push_back
- 函数后向量赋值的性能