KAN`ский блог
Мысли вслух…
-
Окт6
Сравнение vector и простой массив int[]
Filed under: Без рубрики;Комментарии к записи Сравнение vector и простой массив int[] отключеныЗакралось, тут у меня сомнения относительно производительности операций создания и заполнения векторов, решил провестий простой тест, код ниже. Результаты несколько меня удивили:
В Debug-mode:The above code block-1 was executed in 0.0500 second(s) The above code block-2 was executed in 44.5400 second(s)
В Realese-mode:
The above code block-1 was executed in 0.0440 second(s) The above code block-2 was executed in 0.1030 second(s)
Каждый тест запускался по 10 раз, отображены средние результаты.
#include <windows.h> #include <time.h> #include <iostream> #include <vector> HANDLE gHeap; int _tmain(int argc, _TCHAR* argv[]) { gHeap = HeapCreate(0,6553,65530); int test[1000]={0}; clock_t start = clock(); for (int i=0;i<100000;i++){ int* var1 = (int*)HeapAlloc(gHeap,0,1000); memcpy(var1, &test[0], 1000); int* var2 = (int*)HeapAlloc(gHeap,0,900); memcpy(var2, &var1[99], 900); HeapFree(gHeap,0,var1); memcpy(&test[99], var2, 900); HeapFree(gHeap,0,var2); } clock_t stop = clock(); printf("The above code block-1 was executed in %.4f second(s)n", ((double) stop - start) / ((double) CLOCKS_PER_SEC)); start = clock(); for (int i=0;i<100000;i++){ std::vector<int> var3(1000); memcpy(&var3[0], &test[0], 1000); std::vector<int> var4(var3); memcpy(&test[99], &var4[99], 900); } stop = clock(); printf("The above code block-2 was executed in %.4f second(s)n", ((double) stop - start) / ((double) CLOCKS_PER_SEC)); HeapDestroy(gHeap); //getchar(); return 0; }
