내 코드에서 실행 시간을 확인하려고합니다. 코드는 내 시도가 Project Euler Problem 5입니다. 실행 시간을 출력하려고하면 0ns가됩니다.런타임 (나노초)을 볼 수없는 이유는 무엇입니까?
#define MAX_DIVISOR 20
bool isDivisible(long, int);
int main() {
auto begin = std::chrono::high_resolution_clock::now();
int d = 2;
long inc = 1;
long i = 1;
while (d < (MAX_DIVISOR + 1)) {
if ((i % d) == 0) {
inc = i;
i = inc;
d++;
}
else {
i += inc;
}
}
auto end = std::chrono::high_resolution_clock::now();
printf("Run time: %llu ns\n", (std::chrono::duration_cast<std::chrono::nanoseconds>(end - begin).count())); // Gives 0 here.
std::cout << "ANS: " << i << std::endl;
system("pause");
return 0;
}
그것은 당신의 시계 해상도가 충분히 높지 않을 가능성이 있습니다 :
는 여기가 가능한 구현을 참조하는 방법의 코드입니다. 1000 초 동안 기다리는 간단한 루프로 테스트를 수행하여 아이디어를 얻으십시오. Windows에서는 예를 들어 15ms의 해상도를 갖습니다. 다른 방법 : 프로그램을 10000 번 실행하고 전체 실행 시간을 조정하십시오. – Christophe
Windows OS 환경에서는 적절한 나노초 솔루션을 얻지 못할 것입니다. 희망은 +/- 100ms입니다. –
@ πάνταῥε μ 당신은 μs (마이크로 초) 또는 ms (밀리 초)를 의미합니까? – Christophe