comportamiento extraño usando chrono :: high_resolution_clock :: now ()

He estado buscando varios métodos de bucle de tiempo de juego, por ejemplo. Glenn Fiedler y DeWitter. Encontré áreas críticas difíciles de entender debido a mis propias limitaciones de conocimiento de C ++. Con esto me propuse tratar de implementar mi propio método ... Pensé en una buena manera de tratar de entender algo acerca de estos métodos.

[edit1: estoy usando CodeBlocks IDE con minGW-w64 (x64-4.8.1-posix-seh-rev5) como compilador]

[edit2: código y ventanas de salida modificadas para incluir un tercer temporizador, QueryPerformanceCounter]

Al tratar de lograr esto encontré el siguiente problema:

Código mínimo:

#include <chrono>
#include <iostream>
#include <windows.h>
#include <stdio.h>

using namespace std;
using namespace chrono;

LARGE_INTEGER startqpc, stopqpc, li;
double PCFreq = 0.0;


void print()
{
for (int p=0; p<1000000; ) p += 1;  //adjust till ms (steady) returns 1-2ms
}

int main()
{
    for(int x=0; x<200; x += 1)
    {
    steady_clock::time_point start = steady_clock::now();
    auto timePoint1 = chrono::high_resolution_clock::now();

    if(!QueryPerformanceFrequency(&li))
        cout << "QueryPerformanceFrequency failed!\n";
    PCFreq = double(li.QuadPart)/1000.0;
    QueryPerformanceCounter(&startqpc);

    print();

    steady_clock::time_point finish = steady_clock::now();
    auto timePoint2 = chrono::high_resolution_clock::now();
    QueryPerformanceCounter(&stopqpc);
    auto elapsedTime(timePoint2 - timePoint1);
    double diff = (stopqpc.QuadPart - startqpc.QuadPart)/PCFreq;

    cout << "Elapsed time: "
              << duration_cast<milliseconds>(finish - start).count() << "ms (steady)   "
              << chrono::duration_cast<chrono::duration<float, milli >> (elapsedTime).count() << "ms (hires)   "
              << diff << " (qpc) \n";

    }
}

Para fines de comparación, el código anterior utiliza dos temporizadores.

En mi PC la salida de esto es la siguiente:

Elapsed time: 1ms (steady)   0ms (hires)   1.8429 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84209 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.8429 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84209 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84209 (qpc)
Elapsed time: 1ms (steady)   15.6ms (hires)   1.85152 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84209 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84209 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84236 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84209 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84236 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84209 (qpc)
Elapsed time: 1ms (steady)   15.6001ms (hires)   1.85557 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84236 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84209 (qpc)
Elapsed time: 2ms (steady)   0ms (hires)   2.59283 (qpc)
Elapsed time: 2ms (steady)   0ms (hires)   2.25573 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84209 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84236 (qpc)
Elapsed time: 1ms (steady)   15.6ms (hires)   1.85072 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84236 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84236 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84263 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84209 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84263 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84209 (qpc)
Elapsed time: 1ms (steady)   15.6ms (hires)   1.85422 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84209 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84209 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84236 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84263 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84236 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84263 (qpc)
Elapsed time: 1ms (steady)   15.6001ms (hires)   1.85099 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84209 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84209 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84209 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84236 (qpc)
Elapsed time: 2ms (steady)   0ms (hires)   2.31582 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84236 (qpc)
Elapsed time: 1ms (steady)   15.6ms (hires)   1.84964 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84236 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84209 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84209 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84209 (qpc)
Elapsed time: 2ms (steady)   0ms (hires)   2.52466 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84236 (qpc)
Elapsed time: 2ms (steady)   15.6ms (hires)   2.25169 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84263 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84209 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84236 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84209 (qpc)
Elapsed time: 2ms (steady)   0ms (hires)   2.26974 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84209 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84991 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84667 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84209 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84236 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84209 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84209 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.89518 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84236 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.87874 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.92213 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.87605 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84236 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84209 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84263 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84209 (qpc)
Elapsed time: 2ms (steady)   0ms (hires)   2.03126 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84236 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84236 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84209 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84236 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.87659 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.88467 (qpc)
Elapsed time: 2ms (steady)   0ms (hires)   2.24899 (qpc)
Elapsed time: 2ms (steady)   0ms (hires)   2.30316 (qpc)
Elapsed time: 2ms (steady)   0ms (hires)   2.23579 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.93263 (qpc)
Elapsed time: 2ms (steady)   0ms (hires)   2.23552 (qpc)
Elapsed time: 2ms (steady)   15.6ms (hires)   2.42118 (qpc)
Elapsed time: 2ms (steady)   0ms (hires)   2.24522 (qpc)
Elapsed time: 2ms (steady)   0ms (hires)   2.23471 (qpc)
Elapsed time: 2ms (steady)   0ms (hires)   2.23848 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.93425 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.9329 (qpc)
Elapsed time: 1ms (steady)   15.6001ms (hires)   1.85126 (qpc)
Elapsed time: 2ms (steady)   0ms (hires)   2.35355 (qpc)
Elapsed time: 2ms (steady)   0ms (hires)   2.23687 (qpc)
Elapsed time: 2ms (steady)   0ms (hires)   2.23633 (qpc)
Elapsed time: 2ms (steady)   0ms (hires)   2.2374 (qpc)
Elapsed time: 2ms (steady)   0ms (hires)   2.23498 (qpc)
Elapsed time: 1ms (steady)   15.6ms (hires)   1.85449 (qpc)
Elapsed time: 2ms (steady)   0ms (hires)   2.0097 (qpc)
Elapsed time: 2ms (steady)   0ms (hires)   2.15441 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.93263 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.93452 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.93425 (qpc)
Elapsed time: 2ms (steady)   0ms (hires)   2.23579 (qpc)
Elapsed time: 2ms (steady)   15.6ms (hires)   2.04554 (qpc)
Elapsed time: 2ms (steady)   0ms (hires)   2.1121 (qpc)
Elapsed time: 2ms (steady)   0ms (hires)   2.01779 (qpc)
Elapsed time: 2ms (steady)   0ms (hires)   2.07222 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.9329 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.93425 (qpc)
Elapsed time: 1ms (steady)   15.6001ms (hires)   1.95015 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.95177 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84587 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84452 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84479 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84425 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84533 (qpc)
Elapsed time: 1ms (steady)   15.6ms (hires)   1.85233 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.88278 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84667 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84452 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84452 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84479 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84533 (qpc)
Elapsed time: 1ms (steady)   15.6ms (hires)   1.88629 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84506 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84452 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84452 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84452 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84452 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.8456 (qpc)
Elapsed time: 1ms (steady)   15.6ms (hires)   1.8588 (qpc)
Elapsed time: 2ms (steady)   0ms (hires)   2.06225 (qpc)
Elapsed time: 2ms (steady)   0ms (hires)   2.23633 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.93317 (qpc)
Elapsed time: 2ms (steady)   0ms (hires)   2.06009 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84452 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84533 (qpc)
Elapsed time: 1ms (steady)   15.6001ms (hires)   1.86284 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84452 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84452 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.93425 (qpc)
Elapsed time: 2ms (steady)   0ms (hires)   2.02803 (qpc)
Elapsed time: 2ms (steady)   0ms (hires)   2.26839 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.93398 (qpc)
Elapsed time: 1ms (steady)   15.6ms (hires)   1.93641 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.93371 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.93344 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.9329 (qpc)
Elapsed time: 2ms (steady)   0ms (hires)   2.02345 (qpc)
Elapsed time: 2ms (steady)   0ms (hires)   2.08731 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.9356 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84506 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.93398 (qpc)
Elapsed time: 2ms (steady)   0ms (hires)   2.09 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.93371 (qpc)
Elapsed time: 2ms (steady)   0ms (hires)   2.03072 (qpc)
Elapsed time: 2ms (steady)   0ms (hires)   2.19213 (qpc)
Elapsed time: 1ms (steady)   15.6ms (hires)   1.85287 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.9321 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.93344 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.93317 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.93344 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.93263 (qpc)
Elapsed time: 2ms (steady)   0ms (hires)   2.42711 (qpc)
Elapsed time: 1ms (steady)   15.6001ms (hires)   1.9418 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.9356 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84452 (qpc)
Elapsed time: 2ms (steady)   0ms (hires)   2.08947 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.9329 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.93614 (qpc)
Elapsed time: 2ms (steady)   15.6ms (hires)   2.27702 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84452 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.93614 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.93317 (qpc)
Elapsed time: 2ms (steady)   0ms (hires)   2.08974 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.92698 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.93317 (qpc)
Elapsed time: 2ms (steady)   15.6ms (hires)   2.09054 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.96066 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.96093 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.8456 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.8456 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.8456 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84533 (qpc)
Elapsed time: 1ms (steady)   15.6001ms (hires)   1.91835 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.8456 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84587 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.8456 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84452 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84452 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84452 (qpc)
Elapsed time: 1ms (steady)   15.6ms (hires)   1.85233 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84425 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84479 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.84452 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.93317 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.93317 (qpc)
Elapsed time: 2ms (steady)   0ms (hires)   2.23552 (qpc)
Elapsed time: 1ms (steady)   15.6ms (hires)   1.93102 (qpc)
Elapsed time: 2ms (steady)   0ms (hires)   2.07033 (qpc)
Elapsed time: 2ms (steady)   0ms (hires)   2.09405 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.9329 (qpc)
Elapsed time: 1ms (steady)   0ms (hires)   1.93263 (qpc)

Process returned 0 (0x0)   execution time : 0.484 s
Press any key to continue.

Utilizandoduration_cast<microseconds>(finish - start).count()/1000.0 para steady_clock vemos lo siguiente: -

Elapsed time: 1.842ms (steady)   0ms (hires)   1.84236 (qpc)
Elapsed time: 1.842ms (steady)   0ms (hires)   1.84263 (qpc)
Elapsed time: 1.843ms (steady)   0ms (hires)   1.84317 (qpc)
Elapsed time: 1.842ms (steady)   0ms (hires)   1.84236 (qpc)
Elapsed time: 1.846ms (steady)   0ms (hires)   1.84694 (qpc)
Elapsed time: 1.845ms (steady)   0ms (hires)   1.8456 (qpc)
Elapsed time: 1.877ms (steady)   0ms (hires)   1.87685 (qpc)
Elapsed time: 1.916ms (steady)   15.6ms (hires)   1.9162 (qpc)
Elapsed time: 1.906ms (steady)   0ms (hires)   1.90623 (qpc)
Elapsed time: 1.905ms (steady)   0ms (hires)   1.90515 (qpc)
Elapsed time: 1.909ms (steady)   0ms (hires)   1.90919 (qpc)
Elapsed time: 1.905ms (steady)   0ms (hires)   1.90542 (qpc)
Elapsed time: 1.905ms (steady)   0ms (hires)   1.90488 (qpc)
Elapsed time: 1.844ms (steady)   0ms (hires)   1.84452 (qpc)
Elapsed time: 1.943ms (steady)   15.6ms (hires)   1.94287 (qpc)
Elapsed time: 1.872ms (steady)   0ms (hires)   1.87281 (qpc)
Elapsed time: 1.842ms (steady)   0ms (hires)   1.84209 (qpc)
Elapsed time: 1.842ms (steady)   0ms (hires)   1.84209 (qpc)
Elapsed time: 1.842ms (steady)   0ms (hires)   1.84209 (qpc)
Elapsed time: 1.842ms (steady)   0ms (hires)   1.84209 (qpc)
Elapsed time: 1.842ms (steady)   0ms (hires)   1.84209 (qpc)
Elapsed time: 1.846ms (steady)   15.6001ms (hires)   1.8464 (qpc)
Elapsed time: 1.875ms (steady)   0ms (hires)   1.87497 (qpc)
Elapsed time: 2.033ms (steady)   0ms (hires)   2.03449 (qpc)
Elapsed time: 1.922ms (steady)   0ms (hires)   1.92293 (qpc)
Elapsed time: 1.922ms (steady)   0ms (hires)   1.92293 (qpc)
Elapsed time: 1.926ms (steady)   0ms (hires)   1.92698 (qpc)
Elapsed time: 2.004ms (steady)   15.6ms (hires)   2.00485 (qpc)
Elapsed time: 1.847ms (steady)   0ms (hires)   1.84748 (qpc)
Elapsed time: 1.847ms (steady)   0ms (hires)   1.84748 (qpc)
Elapsed time: 1.848ms (steady)   0ms (hires)   1.84856 (qpc)
Elapsed time: 1.849ms (steady)   0ms (hires)   1.84937 (qpc)
Elapsed time: 2.299ms (steady)   0ms (hires)   2.29938 (qpc)
Elapsed time: 3.497ms (steady)   15.6ms (hires)   3.49664 (qpc)
Elapsed time: 3.528ms (steady)   0ms (hires)   3.52843 (qpc)
Elapsed time: 2.299ms (steady)   0ms (hires)   2.29857 (qpc)
Elapsed time: 1.849ms (steady)   0ms (hires)   1.84937 (qpc)
Elapsed time: 1.848ms (steady)   0ms (hires)   1.84856 (qpc)
Elapsed time: 1.848ms (steady)   0ms (hires)   1.84856 (qpc)
Elapsed time: 1.842ms (steady)   0ms (hires)   1.84236 (qpc)
Elapsed time: 1.842ms (steady)   0ms (hires)   1.84263 (qpc)
Elapsed time: 1.842ms (steady)   0ms (hires)   1.84263 (qpc)
Elapsed time: 1.854ms (steady)   0ms (hires)   1.85395 (qpc)
Elapsed time: 1.842ms (steady)   0ms (hires)   1.84236 (qpc)
Elapsed time: 1.842ms (steady)   0ms (hires)   1.84236 (qpc)
Elapsed time: 1.842ms (steady)   0ms (hires)   1.84236 (qpc)
Elapsed time: 1.843ms (steady)   0ms (hires)   1.84371 (qpc)
Elapsed time: 1.842ms (steady)   0ms (hires)   1.8429 (qpc)
Elapsed time: 1.842ms (steady)   0ms (hires)   1.84236 (qpc)
Elapsed time: 1.842ms (steady)   0ms (hires)   1.84236 (qpc)
Elapsed time: 1.843ms (steady)   0ms (hires)   1.8429 (qpc)
Elapsed time: 1.842ms (steady)   0ms (hires)   1.84236 (qpc)
Elapsed time: 1.842ms (steady)   0ms (hires)   1.84236 (qpc)
Elapsed time: 1.861ms (steady)   0ms (hires)   1.86123 (qpc)
Elapsed time: 1.842ms (steady)   0ms (hires)   1.84236 (qpc)
Elapsed time: 1.842ms (steady)   0ms (hires)   1.84236 (qpc)
Elapsed time: 1.842ms (steady)   0ms (hires)   1.84209 (qpc)
Elapsed time: 1.842ms (steady)   0ms (hires)   1.84236 (qpc)
Elapsed time: 2.058ms (steady)   0ms (hires)   2.05848 (qpc)
Elapsed time: 1.842ms (steady)   0ms (hires)   1.84209 (qpc)
Elapsed time: 1.881ms (steady)   0ms (hires)   1.88144 (qpc)
Elapsed time: 1.842ms (steady)   0ms (hires)   1.84236 (qpc)
Elapsed time: 1.842ms (steady)   0ms (hires)   1.84209 (qpc)
Elapsed time: 1.842ms (steady)   0ms (hires)   1.84236 (qpc)
Elapsed time: 1.842ms (steady)   0ms (hires)   1.84209 (qpc)
Elapsed time: 1.845ms (steady)   0ms (hires)   1.84479 (qpc)
Elapsed time: 1.843ms (steady)   0ms (hires)   1.84371 (qpc)
Elapsed time: 1.842ms (steady)   0ms (hires)   1.84209 (qpc)
Elapsed time: 1.842ms (steady)   0ms (hires)   1.84209 (qpc)
Elapsed time: 1.842ms (steady)   0ms (hires)   1.84236 (qpc)
Elapsed time: 1.842ms (steady)   0ms (hires)   1.84209 (qpc)
Elapsed time: 1.842ms (steady)   0ms (hires)   1.84209 (qpc)
Elapsed time: 1.842ms (steady)   0ms (hires)   1.84209 (qpc)
Elapsed time: 1.896ms (steady)   0ms (hires)   1.89653 (qpc)
Elapsed time: 1.842ms (steady)   0ms (hires)   1.84236 (qpc)
Elapsed time: 1.843ms (steady)   0ms (hires)   1.84398 (qpc)
Elapsed time: 1.844ms (steady)   0ms (hires)   1.84452 (qpc)
Elapsed time: 1.844ms (steady)   0ms (hires)   1.84479 (qpc)
Elapsed time: 1.844ms (steady)   0ms (hires)   1.84452 (qpc)
Elapsed time: 1.844ms (steady)   0ms (hires)   1.84425 (qpc)
Elapsed time: 1.844ms (steady)   0ms (hires)   1.84452 (qpc)
Elapsed time: 1.886ms (steady)   0ms (hires)   1.88656 (qpc)
Elapsed time: 1.844ms (steady)   0ms (hires)   1.84452 (qpc)
Elapsed time: 1.845ms (steady)   0ms (hires)   1.84479 (qpc)
Elapsed time: 1.844ms (steady)   0ms (hires)   1.84452 (qpc)
Elapsed time: 1.844ms (steady)   0ms (hires)   1.84452 (qpc)
Elapsed time: 1.844ms (steady)   0ms (hires)   1.84479 (qpc)
Elapsed time: 1.85ms (steady)   15.6ms (hires)   1.85099 (qpc)
Elapsed time: 1.844ms (steady)   0ms (hires)   1.84452 (qpc)
Elapsed time: 1.844ms (steady)   0ms (hires)   1.84452 (qpc)
Elapsed time: 1.845ms (steady)   0ms (hires)   1.84506 (qpc)
Elapsed time: 1.845ms (steady)   0ms (hires)   1.84479 (qpc)
Elapsed time: 1.844ms (steady)   0ms (hires)   1.84452 (qpc)
Elapsed time: 1.844ms (steady)   0ms (hires)   1.84452 (qpc)
Elapsed time: 1.848ms (steady)   15.6001ms (hires)   1.84883 (qpc)
Elapsed time: 2.066ms (steady)   0ms (hires)   2.06683 (qpc)
Elapsed time: 1.845ms (steady)   0ms (hires)   1.84506 (qpc)
Elapsed time: 1.845ms (steady)   0ms (hires)   1.84506 (qpc)
Elapsed time: 1.845ms (steady)   0ms (hires)   1.84479 (qpc)
Elapsed time: 1.845ms (steady)   0ms (hires)   1.84506 (qpc)
Elapsed time: 1.845ms (steady)   0ms (hires)   1.84479 (qpc)
Elapsed time: 1.888ms (steady)   0ms (hires)   1.88817 (qpc)
Elapsed time: 1.844ms (steady)   0ms (hires)   1.84452 (qpc)
Elapsed time: 1.845ms (steady)   0ms (hires)   1.84479 (qpc)
Elapsed time: 1.844ms (steady)   0ms (hires)   1.84479 (qpc)
Elapsed time: 1.844ms (steady)   0ms (hires)   1.84506 (qpc)
Elapsed time: 1.844ms (steady)   0ms (hires)   1.84506 (qpc)
Elapsed time: 1.853ms (steady)   15.6ms (hires)   1.85341 (qpc)
Elapsed time: 1.844ms (steady)   0ms (hires)   1.84479 (qpc)
Elapsed time: 2.056ms (steady)   0ms (hires)   2.05605 (qpc)
Elapsed time: 1.88ms (steady)   0ms (hires)   1.8809 (qpc)
Elapsed time: 1.844ms (steady)   0ms (hires)   1.84479 (qpc)
Elapsed time: 1.845ms (steady)   0ms (hires)   1.84479 (qpc)
Elapsed time: 1.882ms (steady)   0ms (hires)   1.88224 (qpc)
Elapsed time: 1.849ms (steady)   15.6ms (hires)   1.85018 (qpc)
Elapsed time: 1.845ms (steady)   0ms (hires)   1.84479 (qpc)
Elapsed time: 1.844ms (steady)   0ms (hires)   1.84452 (qpc)
Elapsed time: 1.844ms (steady)   0ms (hires)   1.84479 (qpc)
Elapsed time: 1.845ms (steady)   0ms (hires)   1.84506 (qpc)
Elapsed time: 1.845ms (steady)   0ms (hires)   1.84506 (qpc)
Elapsed time: 1.844ms (steady)   0ms (hires)   1.84479 (qpc)
Elapsed time: 2.243ms (steady)   0ms (hires)   2.24333 (qpc)
Elapsed time: 1.844ms (steady)   0ms (hires)   1.84479 (qpc)
Elapsed time: 1.844ms (steady)   0ms (hires)   1.84452 (qpc)
Elapsed time: 1.845ms (steady)   0ms (hires)   1.84506 (qpc)
Elapsed time: 1.845ms (steady)   0ms (hires)   1.84506 (qpc)
Elapsed time: 1.844ms (steady)   0ms (hires)   1.84479 (qpc)
Elapsed time: 1.849ms (steady)   15.6ms (hires)   1.85018 (qpc)
Elapsed time: 1.845ms (steady)   0ms (hires)   1.84506 (qpc)
Elapsed time: 1.845ms (steady)   0ms (hires)   1.84506 (qpc)
Elapsed time: 2.109ms (steady)   0ms (hires)   2.10914 (qpc)
Elapsed time: 1.845ms (steady)   0ms (hires)   1.84533 (qpc)
Elapsed time: 1.845ms (steady)   0ms (hires)   1.84506 (qpc)
Elapsed time: 1.845ms (steady)   0ms (hires)   1.84506 (qpc)
Elapsed time: 1.845ms (steady)   0ms (hires)   1.84506 (qpc)
Elapsed time: 1.844ms (steady)   0ms (hires)   1.84479 (qpc)
Elapsed time: 1.845ms (steady)   0ms (hires)   1.84506 (qpc)
Elapsed time: 2.006ms (steady)   0ms (hires)   2.00647 (qpc)
Elapsed time: 1.844ms (steady)   0ms (hires)   1.84452 (qpc)
Elapsed time: 1.845ms (steady)   0ms (hires)   1.84506 (qpc)
Elapsed time: 1.852ms (steady)   15.6ms (hires)   1.8526 (qpc)
Elapsed time: 2.534ms (steady)   0ms (hires)   2.53463 (qpc)
Elapsed time: 2.368ms (steady)   0ms (hires)   2.3681 (qpc)
Elapsed time: 1.845ms (steady)   0ms (hires)   1.84533 (qpc)
Elapsed time: 1.844ms (steady)   0ms (hires)   1.84452 (qpc)
Elapsed time: 1.845ms (steady)   0ms (hires)   1.84479 (qpc)
Elapsed time: 1.845ms (steady)   0ms (hires)   1.84533 (qpc)
Elapsed time: 1.845ms (steady)   0ms (hires)   1.84506 (qpc)
Elapsed time: 1.845ms (steady)   0ms (hires)   1.84479 (qpc)
Elapsed time: 1.845ms (steady)   0ms (hires)   1.84479 (qpc)
Elapsed time: 1.845ms (steady)   0ms (hires)   1.84506 (qpc)
Elapsed time: 1.844ms (steady)   0ms (hires)   1.84479 (qpc)
Elapsed time: 1.844ms (steady)   0ms (hires)   1.84452 (qpc)
Elapsed time: 1.853ms (steady)   15.6ms (hires)   1.85368 (qpc)
Elapsed time: 1.843ms (steady)   0ms (hires)   1.84371 (qpc)
Elapsed time: 1.845ms (steady)   0ms (hires)   1.84533 (qpc)
Elapsed time: 1.844ms (steady)   0ms (hires)   1.84425 (qpc)
Elapsed time: 1.845ms (steady)   0ms (hires)   1.84479 (qpc)
Elapsed time: 1.844ms (steady)   0ms (hires)   1.84479 (qpc)
Elapsed time: 1.844ms (steady)   0ms (hires)   1.84506 (qpc)
Elapsed time: 1.852ms (steady)   15.6ms (hires)   1.85233 (qpc)
Elapsed time: 1.849ms (steady)   0ms (hires)   1.8491 (qpc)
Elapsed time: 1.845ms (steady)   0ms (hires)   1.84587 (qpc)
Elapsed time: 1.844ms (steady)   0ms (hires)   1.84425 (qpc)
Elapsed time: 1.844ms (steady)   0ms (hires)   1.84425 (qpc)
Elapsed time: 1.845ms (steady)   0ms (hires)   1.84479 (qpc)
Elapsed time: 1.844ms (steady)   0ms (hires)   1.84452 (qpc)
Elapsed time: 1.891ms (steady)   15.6001ms (hires)   1.89168 (qpc)
Elapsed time: 1.845ms (steady)   0ms (hires)   1.84506 (qpc)
Elapsed time: 1.846ms (steady)   0ms (hires)   1.84587 (qpc)
Elapsed time: 1.844ms (steady)   0ms (hires)   1.84425 (qpc)
Elapsed time: 1.844ms (steady)   0ms (hires)   1.84506 (qpc)
Elapsed time: 1.845ms (steady)   0ms (hires)   1.84479 (qpc)
Elapsed time: 1.845ms (steady)   0ms (hires)   1.84479 (qpc)
Elapsed time: 1.846ms (steady)   15.6ms (hires)   1.8464 (qpc)
Elapsed time: 1.845ms (steady)   0ms (hires)   1.84479 (qpc)
Elapsed time: 1.845ms (steady)   0ms (hires)   1.84587 (qpc)
Elapsed time: 1.844ms (steady)   0ms (hires)   1.84452 (qpc)
Elapsed time: 1.845ms (steady)   0ms (hires)   1.84479 (qpc)
Elapsed time: 1.845ms (steady)   0ms (hires)   1.84479 (qpc)
Elapsed time: 1.844ms (steady)   0ms (hires)   1.84479 (qpc)
Elapsed time: 1.848ms (steady)   15.6ms (hires)   1.84829 (qpc)
Elapsed time: 1.845ms (steady)   0ms (hires)   1.84506 (qpc)
Elapsed time: 1.845ms (steady)   0ms (hires)   1.8456 (qpc)
Elapsed time: 1.844ms (steady)   0ms (hires)   1.84425 (qpc)
Elapsed time: 1.844ms (steady)   0ms (hires)   1.84506 (qpc)
Elapsed time: 1.845ms (steady)   0ms (hires)   1.84479 (qpc)
Elapsed time: 1.845ms (steady)   0ms (hires)   1.84479 (qpc)
Elapsed time: 1.846ms (steady)   15.6ms (hires)   1.84614 (qpc)
Elapsed time: 1.844ms (steady)   0ms (hires)   1.84425 (qpc)
Elapsed time: 1.845ms (steady)   0ms (hires)   1.8456 (qpc)
Elapsed time: 1.844ms (steady)   0ms (hires)   1.84425 (qpc)
Elapsed time: 1.845ms (steady)   0ms (hires)   1.84479 (qpc)
Elapsed time: 1.845ms (steady)   0ms (hires)   1.84479 (qpc)
Elapsed time: 1.844ms (steady)   0ms (hires)   1.84506 (qpc)
Elapsed time: 1.872ms (steady)   15.6001ms (hires)   1.87281 (qpc)
Elapsed time: 1.844ms (steady)   0ms (hires)   1.84452 (qpc)
Elapsed time: 1.845ms (steady)   0ms (hires)   1.84587 (qpc)
Elapsed time: 1.844ms (steady)   0ms (hires)   1.84425 (qpc)
Elapsed time: 1.845ms (steady)   0ms (hires)   1.84479 (qpc)

Process returned 0 (0x0)   execution time : 0.499 s
Press any key to continue 

Observe cómo el reloj de alta resolución fluctúa entre 0 y 15.6 ms y observe la comparación steady_clock.

El problema que tengo es que si tuviera que implementar un ciclo de juego de tiempo fijo en el que el código update () actualice las posiciones de la entidad exactamente a 1000/60 (60 ciclos de actualización por segundo), es decir, cada 16.666etc ms, entonces esto es muy cerca del temporizador de contrataciones devueltas valor fluctuante! El problema real es que si también implemento un acumulador para acomodar los tiempos de cuadro del bucle del juego que están por debajo de 1000/60 ms y cualquier remanente una vez que se haya completado la actualización (), el bucle de actualización se ingresa antes, y en puntos de tiempo irregulares debería.

¿Hay algún problema con el código mínimo anterior y, de no ser así, debería preocuparme por una implementación adecuada de tiempo fijo? Además, y si es relevante, ¿hay alguna forma de aislar un programa / subproceso para que no sea interrumpido por el sistema IRQ u otros eventos de sondeo? Supongo que el temporizador de contrataciones puede estar sujeto a tales interrupciones.

Respuestas a la pregunta(1)

Su respuesta a la pregunta