幾種C 多維陣列管理方法的效能測試

2021-08-09 02:43:48 字數 2003 閱讀 5484

為了測試幾種常用的原生多維陣列管理方法,我們利用gnu c++ 7.2 最新的msys2版本,進行乙個測試: 

主要測試涵蓋指標型的二維陣列、vector\array\map

#include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

//gnu c++ 7.2

//鏈結選項: -wl,--stack,20240000

using

namespace

std;

const

int testlooptimes = 1000;

const

int d1 = 80;

const

int d2 = 60;

const

int d3 = 40;

const

int d4 = 20;

//用於進行迴圈賦值測試的函式

template

double function_loop(t p, int ntimes)

//用於測試含有構造、析構的函式

void test(function ftest)

//vector 測試

double function_vector()

//array 測試

double function_array()

; printf ("test array:\n");

double loopcost = function_loop(p,testlooptimes);

return loopcost;

}//map 測試

double function_map()

//unordered_map 測試

double function_unordered_map()

//shared_ptr 測試

#if __gnuc__>= 7

double function_shared_ptr()

#endif

//pointer測試

double function_pointer()}}

double loopcost = function_loop(p,testlooptimes);

for (h=0; hfor (i=0; ifor (j=0; jdelete p[h][i][j];

}delete p[h][i];

}delete p[h];

}delete p;

return loopcost;

}int main()

輸出結果如下:

test vector:

loop cost: 1.594000 (s)

mem cost: 0.046000 (s)

test array:

loop cost: 1.204000 (s)

mem cost: 0.000000 (s)

test pointer:

loop cost: 1.500000 (s)

mem cost: 0.015000 (s)

test map:

loop cost: 156.454000 (s)

mem cost: 0.563000 (s)

test unordered_map:

loop cost: 83.639000 (s)

mem cost: 0.609000 (s)

test shared_ptr:

loop cost: 1.219000 (s)

mem cost: 0.015000 (s)

可見,使用 shared_ptr 還是很划算的!用array、vector也不賴!

js多維陣列變一維的幾種方法

var arr 1 2,3 4,5 var newarr concat.arr var arr 1 2,3,4 5 6 var newarr arr.join split 解釋 利用join將陣列中所有元素放入乙個字串,再用split分割。缺點 數字型別變成字串型別 var arr 1 2,3,4 ...

使用c 進行多維陣列遍歷的方法

主要介紹四種遍歷多維陣列的方法 第一種 使用最原始的,二維遍歷的方式,這種情況下,陣列下標運算子的索引值的型別是size t。int arr 3 5 第一種遍歷方式 最原始的下標方式 const size t row 3 const size t col 5 for size t i 0 i for...

c 建立二維陣列的幾種方法

1 用new申請一塊記憶體空間存放二維陣列 includeusing namespace std int main int argc,char argv int n 10,m 2 int swp 動態申請二維陣列 n行 m列 swp new int n for int i 0 i2 用變數定義二維陣...