2010-06-10 6 views
0

시계 기능이있는 두 for 루프 간의 지연 컨텍스트에서 정확한 상호 작용을 설명 할 수 있습니까? for1은 for2와 for2와 어떻게 상호 작용합니까 (640000000에서 30)?시계 기능이있는 for 루프 간의 상호 작용?

start=clock(); 
cout<<endl<<start<<endl; 
for(delay=0; delay<30; delay++) 
    for(i=0; i<640000000; i++); 

end=clock(); 
cout<<end<<endl; 
cout<<"Num of ticks for non reg-loop: "; 
cout<<end-start<<'\n'; 
+1

찾고있는 것이 무엇인지 정확하게 알 수 있습니까? – VeeArr

+0

32 비트 컴파일러가 처리 할 수없는 30 * 640000000 반복의 루프가 어떻게 완료되는지 이해할 수 없습니까? – highlevelcoder

+0

왜 불가능합니까? ... – Blindy

답변

2

아마 괜찮은 최적화 루프는 어떤 조합이없는 것을 볼 수 완전히 그것을 최적화, 그래서 시작과 끝 사이에 거의 차이가있을 것입니다.

최적화되지 않은 경우 두 루프는 단순히 32 * 640000000이 32 비트 정수에 저장할 수있는 것보다 크기 때문에 해결됩니다. 지연을 확대하기 위해 내부 640000000 루프를 30 번 실행합니다. EDIT

(가변 delay 사용) 30 회마다 그래서 , 그것이 아니라면 (이것은 다음 i 640,000,000 번 시간의 작은 부분을 가지고, 각 증분 증가 0부터 (가변 i 이용) 또 다른 루프를 만들어 멀리 떨어진 곳). 그런 다음 내부 루프가 완료되고 delay이 1 씩 증가하고 내부 루프가 0에서 다시 시작됩니다.

EDIT2 : 당신은 그냥 지연을 추가하려는 경우, 당신은 sleep 또는 usleep 또는 해당 Windows 기능 (들)을 사용하기보다는 반복하여 잠을 구현하기 위해 노력하고 생각했다 ?

+0

즉, 지연은 실제로 어떻게 작동합니까? – highlevelcoder

+0

for 루프가 어떻게 작동하는지 묻고 있습니까? – daramarak

+0

그래서 내가 너무 빠르게 최적화 된 thx 증분? – highlevelcoder