[ 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장의 요약부분이었습니다. |