chrono::duration mało precyzyjne

chrono::duration mało precyzyjne
spartanPAGE
  • Rejestracja:prawie 12 lat
  • Ostatnio:2 dni
0

Jestem chyba odrobinę zniesmaczony.
Odrobina uproszczonego kodu:

Kopiuj
void start(){
    initialize();
    auto new_time = std::chrono::high_resolution_clock::now();
    auto old_time = new_time;
    while(!quit){
        new_time = std::chrono::high_resolution_clock::now();
        auto elapsed_time = new_time - old_time;
        old_time = new_time;
        update(elapsed_time);
        draw();     
    }
    finalize();
}
Kopiuj
typedef std::ratio<1, 1000000000000> pico;
typedef std::chrono::duration<long long, pico> Duration;

virtual void onUpdate(Duration elapsed_time) override{
    static int counter = 0;
    cout << "chrono: " << elapsed_time.count() << "; SDL: " << SDL_GetTicks() << endl;
    if(counter++ > 10) quit = true;
}

Przykładowe wyjście

Kopiuj
chrono: 0; SDL: 26
chrono: 0; SDL: 26
chrono: 0; SDL: 26
chrono: 0; SDL: 27
chrono: 0; SDL: 27
chrono: 0; SDL: 27
chrono: 0; SDL: 28
chrono: 0; SDL: 28
chrono: 0; SDL: 28
chrono: 0; SDL: 28
chrono: 0; SDL: 28
chrono: 0; SDL: 28

Mając standard chciałbym ograniczyć użycie zbędnego kodu z zewnątrz. Czy mogę?
Czy używam chrono w zły sposób?
//EDIT:
code::blocks - Release 13.12 rev 9501 gcc 4.7.1 Windows/unicode - 32 bit
//EDIT:
ehh... nic to, zostaje mi tylko napisać providera

edytowany 7x, ostatnio: spartanPAGE
Wibowit
zniesmaczony? chyba rozczarowany :P
spartanPAGE
Zwał jak zwał... Czy oczekiwanie wysokiej precyzji od wysoce precyzyjnego zegara to zbyt wiele? :s
Wibowit
widocznie producent wypuścił kompilator ze zwaloną biblioteką. standard nic nie mówi o wymaganej precyzji. precyzja zależy od implementacji.
RE
Moderator
  • Rejestracja:około 18 lat
  • Ostatnio:około rok
0

Taki doświadczony użytkownik, a zapomniał powiedzieć jakiego środowiska i kompilatora używa :>.
Visual Studio? Dopiero od wersji, która nadejdzie po VS2013 std::chrono::high_resolution_clock będzie korzystał z QueryPerformanceCounter.
https://connect.microsoft.com/VisualStudio/feedback/details/719443/
Jestem prawie pewny, że działa to już tak w Visual Studio "14" (czyli najprawdopodobniej Visual Studio 2015).
Możesz CTP pobrać tutaj: http://www.visualstudio.com/en-us/downloads/visual-studio-14-ctp-vs

spartanPAGE
naprawione; wszyscy jesteśmy ludźmi, chyba mi to wybaczysz ;)
RE
nieeeeeeeeeeee!!!!!!!!!!!!1111111111 dostajesz ostrzeżenie!

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.