Вот небольшой тест, который я сделал, и результат меня удивил: выполнение одного цикла дважды было примерно вдвое быстрее, чем цикл один раз. Я предполагаю, что это из-за доступа к памяти?
float* A = new float[1000000];
float* B = new float[1000000];
int h,w;
h = w = 1000;
CString txt;
double time1, time2;
time1 = Timer::instance()->getTime();
for(int j = 0; j < h; j++){
for(int i = 0; i < w; i++){
A[i+j*w] = 1;
B[i+j*w] = 1;
}
}
time2 = Timer::instance()->getTime();
txt.Format(_T("Both in same loop = %f"),time2-time1);
AfxMessageBox(txt);
time1 = Timer::instance()->getTime();
for(int j = 0; j < h; j++){
for(int i = 0; i < w; i++){
A[i+j*w] = 1;
}
}
for(int j = 0; j < h; j++){
for(int i = 0; i < w; i++){
B[i+j*w] = 1;
}
}
time2 = Timer::instance()->getTime();
txt.Format(_T("Different loops = %f"),time2-time1);
AfxMessageBox(txt);