두 개의 거의 동일한 부호를 고려하자 :가로 대 세로 브라우징
우선 대신 탭 번째 [I] [J]에
for (int k=0;k<1000;k++)
{
for (int i=0;i<600;i++)
{
for (int j=0;j<600;j++)
{
tab[j][i] = i *j;
}
}
}
for (int k=0;k<1000;k++)
{
for (int i=0;i<600;i++)
{
for (int j=0;j<600;j++)
{
tab[i][j] = i *j;
}
}
}
둘째 우리 탭이 있습니다 [j] [i].
첫 번째 코드가 훨씬 빠릅니다.
질문
왜 첫 번째 코드가 더 빠릅니까? 프로그램이 셀 캐시로 이동하고, 다음은 캐시를 통해 접근이 셀을 포함 먼저 전체 블록을 액세스하려고 할 때 때문에
내 직감
그것을입니다. 메모리의 배열은 연속적인 셀로 표현되기 때문에 첫 번째 경우에는 두 번째 경우보다 메모리에 대한 액세스가 훨씬 적습니다.