누군가가 내가 차이점을 찾아 내도록 도와 줄 수 있습니까? 때문에 제 번호 :std :: chrono 다른 결과 - 고정 된 시간 단계 루프
#include <iostream>
#include <chrono>
#include <ratio>
using namespace std::chrono;
const nanoseconds timePerFrame = duration_cast<nanoseconds>(duration<steady_clock::rep, std::ratio<1, 60>>(1));
nanoseconds accumulator(0);
nanoseconds counter(0);
steady_clock::time_point begin;
int i = 0;
int main()
{
while(true)
{
begin = steady_clock::now();
while(accumulator >= timePerFrame)
{
accumulator -= timePerFrame;
++i;
}
accumulator += steady_clock::now() - begin;
counter += steady_clock::now() - begin;
if(counter >= seconds(1))
{
std::cout << i << std::endl;
break;
}
}
}
출력 : (30) 및 두 번째 코드 :
#include <iostream>
#include <chrono>
#include <ratio>
using namespace std::chrono;
const nanoseconds timePerFrame = duration_cast<nanoseconds>(duration<steady_clock::rep, std::ratio<1, 60>>(1));
nanoseconds accumulator(0);
nanoseconds counter(0);
steady_clock::time_point begin;
steady_clock::time_point end;
int i = 0;
int main()
{
while(true)
{
begin = steady_clock::now();
while(accumulator >= timePerFrame)
{
accumulator -= timePerFrame;
++i;
}
end = steady_clock::now();
accumulator += end - begin;
counter += end - begin;
if(counter >= seconds(1))
{
std::cout << i << std::endl;
break;
}
}
}
출력 : 60;
유일한 차이점은 두 번째 예의 "end"변수를 사용하는 것입니다. 내 의견으로는 그런 차이가 없어야합니다. 내 말은, steady_clock :: now()가 end = steady_clock :: now()와 정확히 똑같은가요?
나는 그것을 간과했다. 빠른 답변 주셔서 감사합니다. 모든 것이 이제 분명합니다. :) –