|
이전부터 가지고 있던 문제이자 의문이었는데요..
아래와 같은 루틴이 있습니다.
이 루틴을 적게는 백만번에서 수백만번, 천만번까지 돌게 되는데요..
초반에는 좀 빠르게 돌아갑니다... (프로그레스 바로 진행 상태를 출력합니다.)
점점 프로그레스 바 올라가는 속도가 느려집니다.
50% 정도 돌리고 나면 처음 속도의 50% 아래로 떨어지기 시작하더군요..
무슨 문제일까요?
루프 안에 또 루프, 비교... 이런 것들 때문일까요?
이것보다 좀더 빠른 알고리즘을 찾아야 할텐데... 머리가 안굴러가는군요.. 쩝
if(TopLight) {
for(int i = 0; i < cnt_x && !bStop; i++) {
if(Px->InitializeX(socketX, lampDiameter, lampPosition)) {
while(Px->GetIntensity() > 0.001) {
Px->NextPoint();
if(!Px->UpperBound()) {
if(Px->Correction())
Brightness->Catch(Px->GetPosition(), Px->GetIntensity());
break;
}
else {
if(Px->Correction())
Px->Scatter();
else
break;
}
}
}
ProgressBar->StepBy(1);
StatusBar->Panels->Items[0]->Text = IntToStr((i+1) * 100 / cnt) + "%";
IdleLoop();
}
}
|