카테고리 없음

포인터의 속도

고요한하늘... 2006. 6. 28. 11:32

배열을 접근할때 인덱스로 접근한는것보다 포인터로접근하는것이 더 빠르다고 한다.

아래는 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

________________