디버그 모드에서 함수 f1()을 실행하는 데 걸리는 시간이 다른 것으로 변경되는 이유는 무엇입니까? 왜 그것이 릴리스 모드에서 항상 0입니까?clock() 함수에 관한 질문
나는 stdio.h 나 cstdio를 포함시키지 않았고 코드를 컴파일했다. 어떻게?
#include <iostream>
#include <ctime>
void f1()
{
for(int i = 0; i < 10000; i++);
}
int main()
{
clock_t start, finish;
start = clock();
for(int i = 0; i < 100000; i++) f1();
finish = clock();
double duration = (double)(finish - start)/CLOCKS_PER_SEC;
printf("Duration = %6.2f seconds\n", duration);
}
함수 f1()을 변경하여 첫 번째 10000 int의 합계를 계산하고이 값을 반환했습니다. 릴리스 모드는 여전히 실행 시간 동안 0을 반환합니다. – Ayrosa
릴리스 모드에서 실행 시간이 0보다 큰 상황을 마침내 발견했습니다. – Ayrosa
@jaayrosa, 컴파일러 최적화에 대한 내 가정이 맞는지 잘 모르겠지만 빈 루프 일 가능성이 큽니다. 루프에 명령어가있는 런타임이 여전히 0 인 경우 다른 일이 발생할 가능성이 큽니다 (hopia의 답변 참조). – Rob