인터넷에 돌아다니다가 최적화 문제 하나를 보았다.
다음 두 함수(method1, method2)중 어느 함수가 더 빠를까?
정답은 method2.
메모리를 읽을때 sequencial access와 random access의 차이.
다음 두 함수(method1, method2)중 어느 함수가 더 빠를까?
#include <WINDOWS.H>
#include <STDIO.H>
#define ARRAY_SIZE 8192
BYTE array[ARRAY_SIZE][ARRAY_SIZE];
void method1()
{
int x;
int y;
BYTE temp;
for(y = 0; y < ARRAY_SIZE; y++)
{
for(x = 0; x < ARRAY_SIZE; x++)
{
temp = array[x][y];
}
}
}
void method2()
{
int x;
int y;
BYTE temp;
for(x = 0; x < ARRAY_SIZE; x++)
{
for(y = 0; y < ARRAY_SIZE; y++)
{
temp = array[x][y];
}
}
}
int main()
{
DWORD dwTick;
dwTick = GetTickCount();
method1();
printf("method1: %d\n", GetTickCount() - dwTick);
dwTick = GetTickCount();
method2();
printf("method2: %d\n", GetTickCount() - dwTick);
return 0;
}정답은 method2.
메모리를 읽을때 sequencial access와 random access의 차이.



Attribution/Share Alike 2.0 license






