본문 바로가기

Programming/C,C++

[C/C++] 배열과 벡터 속도차이 비교 테스트

반응형

백준문제를 풀다가 배열복사와 벡터복사의 속도차이가 궁금해져서 테스트를 해보았다.

 

각각 100 x 100 짜리 이차원 배열, 벡터를 만들어서 1000번씩 복사하는 작업을 수행하고 시간을 재서 속도차이를 비교해보았다.

 

다음과 같이 테스트소스를 구성하였다.

// 배열복사와 벡터복사 속도차이 비교하는 중이었는데 벡터가 훨씬 느리다.
#include <iostream>
#include <vector>
#include <time.h>

using namespace std;

#define N 100

int main()
{
	// 100x100 arr
	int arrOrg[N][N] = { 0 };

	clock_t start = clock();
	int arr[N][N];
	for (int k = 0; k < 1000; k++)
	{
		for (int i = 0; i < N; i++)
		{
			for (int j = 0; j < N; j++)
			{
				arr[i][j] = arrOrg[i][j];
			}
		}
	}
	
	printf("100x100배열 1000번 복사하는데 걸린 시간 : %.3lf\n", (double)(clock() - start));	// 걸린 시간 출력(ms)

	// 복사할 2차원 벡터를 일단 생성
	vector<vector<int> > vMap(N, vector<int>(N, 0));
	for (int i = 0; i < N; i++)
	{
		for (int j = 0; j < N; j++)
		{
			vMap[i][j] = i * N + j;
		}
	}

	start = clock();
	for(int i = 0 ; i < 1000 ; i ++)
		vector<vector<int> > vCopy = vMap;

	printf("100x100벡터 1000번 복사하는데 걸린 시간 : %.3lf\n", (double)(clock() - start));	// 걸린 시간 출력(ms)


	return 0;
}

 

 

 

결과

반응형