배열을 접근할때 인덱스로 접근한는것보다 포인터로접근하는것이 더 빠르다고 한다.
아래는 2차원 배열을 초기화 할때 인덱스에 의한 접근과 포인터에 의한 접근을 위한 소스이다.
결론부터 말한다면 포인터에 의한 접근이 1.5배이상 빠른것 같다.
-------------------------------------------------------
file1.c
-------------------------------------------------------
#define MAX 1000
int main()
{
int i = 0;
int j = 0;
int k = 0;
int arr[MAX][MAX];
for(i = 0; i < MAX; i++)
{
for(j = 0; j < MAX; j++)
{
arr[i][j] = -1;
}
}
return 0;
}
-------------------------------------------------------
file2.c
-------------------------------------------------------
#define MAX 1000
int main()
{
int i = 0;
int j = 0;
int k = 0;
int arr[MAX][MAX];
int *parr;
parr = &arr[0][0];
for(i = 0; i < MAX * MAX; i++)
{
*parr = -1;
parr++;
}
return 0;
}
file1
________________
|real 0m0.025s
|user 0m0.016s
|sys 0m0.009s
file2
________________
|real 0m0.015s
|user 0m0.006s
|sys 0m0.010s
________________
배열을 접근할때 인덱스로 접근한는것보다 포인터로접근하는것이 더 빠르다고 한다.
아래는 2차원 배열을 초기화 할때 인덱스에 의한 접근과 포인터에 의한 접근을 위한 소스이다.
결론부터 말한다면 포인터에 의한 접근이 1.5배이상 빠른것 같다.
-------------------------------------------------------
file1.c
-------------------------------------------------------
#define MAX 1000
int main()
{
int i = 0;
int j = 0;
int k = 0;
int arr[MAX][MAX];
for(i = 0; i < MAX; i++)
{
for(j = 0; j < MAX; j++)
{
arr[i][j] = -1;
}
}
return 0;
}
-------------------------------------------------------
file2.c
-------------------------------------------------------
#define MAX 1000
int main()
{
int i = 0;
int j = 0;
int k = 0;
int arr[MAX][MAX];
int *parr;
parr = &arr[0][0];
for(i = 0; i < MAX * MAX; i++)
{
*parr = -1;
parr++;
}
return 0;
}
file1
________________
|real 0m0.025s
|user 0m0.016s
|sys 0m0.009s
file2
________________
|real 0m0.015s
|user 0m0.006s
|sys 0m0.010s
________________