CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ CnUnix ] in KIDS
글 쓴 이(By): dalgong (달공아저씨)
날 짜 (Date): 2005년 8월  3일 수요일 오후 06시 13분 12초
제 목(Title): Re: 계산시간 측정?


100만번 수행이면 그 알고리즘이 얼마나 짧은 건지는 모르겠지만, scheduling이 
일어날 가능성이 클꺼 같은데요.

hardware clock tick을 얻는 것은 portable하진 않지만, h/w별로 대부분 쉽게 
알아 낼 수 있다고 합니다. rdtsc같은 놈들요. 그게 쉽지 않으면 
gettimeofday()정도로 만족해야 겠지요. 

코드가 수행하는 시간이 수초에 걸치는 긴 수행시간이라면 interval 
timer측정으로 충분할 껍니다.  

아주 짧은 수준의 수행시간을 재는 것이라면, 
cache나 branch prediction등에 의한 영향을 줄여야 하는데, cold cache 
상태일때와 warm cache상태가 결과가 다를 테고, branch prediction에 대해서도 
비슷한 경우가 있으니까 cache의 확실히 비우거나, cache hit를 만드는 상황을 
유도할 수 있도록 dummy code수행이나 미리 한번 수행하는방식으로 cache, 
branch prediction상태에 따라 측정을 해야한답니다. 
context switching을 감안하면, system의 load상태를 조절하면서 결과를 뽑아 
보는 것도 해야한답니다. 

반복을 얼마나 해야하는 가는 가장 빠른 k개의 결과가 원하는 오차 
범위내에 들어갈때 까지 반복실험하는 k-best timing scheme을 쓰면 된다는 
군요. 

이상은 Computer Systems - A Programmer's Perspective의 9장의 
요약부분이었습니다.

[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.