KAN`ский блог Мысли вслух…
  • Окт
    6

    Сравнение 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;
    }
    Комментарии к записи Сравнение vector и простой массив int[] отключены

Comments are closed.