簡體   English   中英

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 選項。

謝謝

假設你的整數是 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;

或者使用一個專門的庫來為你處理所有這些。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM