• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Problem ze zrozumieniem std::chrono

Object Storage Arubacloud
0 głosów
598 wizyt
pytanie zadane 28 maja 2019 w C i C++ przez Jakub 0 Pasjonat (23,120 p.)
zamknięte 29 maja 2019 przez Jakub 0

Witam, oglądałem ten filmik: https://www.youtube.com/watch?v=oEx5vGNFrLk

Użyte są tam dwa rodzaje "zegarów":

high_resolution_clock np:

start = std::chrono::high_resolution_clock::now();

steady_clock np:

std::chrono::time_point<std::chrono::steady_clock> start, end;

Z dokumentacji zrozumiałem tyle że steady_clock to zegar monotoniczny a czas między jego cyklami jest stały, natomiast high_resolution_clock to zegar z najszybszym dostępnym "tempem tykania".  Nie wiele mi jednak to mówi... dlaczego w tym przykładzie obiekt time_point przechowuje wartość typu std::chrono::steady_clock a pobieranie czasu do tego obiektu wykorzystuje już inny typ: std::chrono::high_resolution_clock? Czy zmiana typu konkretyzacji szablonu obiektu time_point na np. std::chrono::high_resolution_clock coś zmienia?

Zaznaczam że to moje pierwsze kroki z tymi elementami w bibliotece standardowej. Dziękuje i pozdrawiam :)

 

komentarz zamknięcia: zrozumiałem :)

2 odpowiedzi

+2 głosów
odpowiedź 28 maja 2019 przez vector Dyskutant (9,200 p.)
wybrane 29 maja 2019 przez Jakub 0
 
Najlepsza

Cytując standard c++11 N3690

20.13.7.2 Class steady_clock

Objects of class steady_clock represent clocks for which values of time_point never decrease as physical time advances and for which values of time_point advance at a steady rate relative to real time. That is, the clock may not be adjusted.

20.13.7.3 Class high_resolution_clock

Objects of class high_resolution_clock represent clocks with the shortest tick period. high_resolution_- clock may be a synonym for system_clock or steady_clock.

high_resolution_clock gwarantuje minimalny dostępny okres tykania czyli najmniejsza reprezentowalna jednostka czasu przez ten zegar będzie minimalną spośród wszystkich zegarów jakie udostępnia standard.

steady_clock gwarantuje że wraz z upływem czasu fizycznego czas zwrócony przez zegar też będzie się zwiększał proporcjonalnie do niego.

Wyobraź sobie zmianę czasu z letniego na zimowy gdzie czas cofa się o godzinę. high_resolution_clock może uwzględnić to zjawisko przez co możliwe jest aby t2 < t1 w kodzie poniżej.

auto t1 = Clock::now();
std::this_thread:sleep_for(std::chrono::seconds(10));
auto t2 = Clock::now();

steady_clock gwarantuje że t2 > t1. 

+2 głosów
odpowiedź 28 maja 2019 przez adrian17 Ekspert (344,860 p.)

Strzelam: kompilujesz na Windowsie?

Dokumentacja na cppreference mówi:

https://en.cppreference.com/w/cpp/chrono/high_resolution_clock

It may be an alias of std::chrono::system_clock or std::chrono::steady_clock, or a third, independent clock.

Jeśli to alias, czyli ta sama klasa, to ich `time_point` to też te same typy - czyli bez problemu można przypisać jeden do drugiego. Ale to jest do wyboru dla implementacji. Na Linuxie z GCC to nie zadziała, a na Windowsie z VS już tak, jak widać tutaj:

https://godbolt.org/z/C5M6jm

https://godbolt.org/z/TRdE7B

Podobne pytania

0 głosów
3 odpowiedzi 347 wizyt
pytanie zadane 13 lipca 2020 w C i C++ przez Verdatonix Nowicjusz (150 p.)
0 głosów
2 odpowiedzi 415 wizyt
pytanie zadane 27 kwietnia 2019 w C i C++ przez Piotr Płatos Bywalec (2,380 p.)
0 głosów
1 odpowiedź 492 wizyt
pytanie zadane 2 kwietnia 2019 w C i C++ przez robertos18 Obywatel (1,120 p.)

92,580 zapytań

141,433 odpowiedzi

319,665 komentarzy

61,965 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...