백준문제를 풀다가 배열복사와 벡터복사의 속도차이가 궁금해져서 테스트를 해보았다.
각각 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;
}

'Programming > C,C++' 카테고리의 다른 글
| [char*, char[], const char* ] 문자열 상수, 문자열 변수 이해 (0) | 2020.03.31 |
|---|---|
| [C++ 소켓 스레드통신] 스레드클래스를 직접 만들고 소켓통신 구현하기 (0) | 2020.03.30 |
| [C++] 2차원벡터 사용 예시 (0) | 2020.03.08 |
| [C/C++, 시간측정법]C언어(visual studio) 시간측정법 (0) | 2020.02.11 |
| [C/C++]C언어 소스 최적화(시간효율, 메모리효율성 증대) (0) | 2020.02.11 |