logo

Chrono w C++

to nagłówek C++, który udostępnia kolekcję typów i funkcji do pracy z czasem. Jest częścią standardowej biblioteki szablonów C++ (STL) i jest zawarta w C++ 11 i nowszych wersjach.

udostępnia trzy główne typy zegarów: zegar_systemowy zegar_stały i zegar_wysokiej rozdzielczości. Zegary te służą do pomiaru czasu na różne sposoby.

system_clock reprezentuje ogólnosystemowy zegar ścienny czasu rzeczywistego. Wpływ na to mają ustawienia czasu systemu.
stable_clock reprezentuje monotonicznie rosnący zegar, na który nie mają wpływu zmiany czasu systemowego.
high_registration_clock to zegar z najkrótszym okresem taktu dostępnym w systemie.



połącz bazę danych Java

udostępnia również zbiór typów czasu trwania, w tym czas trwaniaktóre można wykorzystać do reprezentowania czasu trwania. Rep to typ reprezentacji (np. int lub long), a Period to stosunek czasu trwania (np. nanosekundy lub sekundy).
Dodatkowoudostępnia kolekcję typów punktów czasowych, w tym time_pointktóre można wykorzystać do przedstawienia punktu w czasie. Clock to typ zegara (np. zegar_systemowy), a Duration to typ czasu trwania (np. sekundy)

Biblioteka Chrono służy do obsługi daty i godziny. Bibliotekę tę zaprojektowano, aby poradzić sobie z faktem, że timery i zegary mogą się różnić w różnych systemach, a tym samym z czasem poprawić precyzję. Wyjątkowość chrono polega na tym, że zapewnia koncepcja neutralna pod względem precyzji poprzez oddzielenie czasu trwania i punktu czasu (punktu czasowego) od określonych zegarów. chrono jest nazwą nagłówka, a także podprzestrzeni nazw: Wszystkie elementy w tym nagłówku (z wyjątkiem specjalizacji typu common_type) nie są zdefiniowane bezpośrednio w przestrzeni nazw std (jak większość standardowej biblioteki), ale w std::chrono przestrzeni nazw . Elementy w tym nagłówku dotyczą czasu. Odbywa się to głównie za pomocą trzech koncepcji:

Czas trwania

Obiekt czasu trwania wyraża przedział czasu za pomocą licznika, na przykład minuty, dwóch godzin lub dziesięciu milisekund. Na przykład „42 sekundy” można przedstawić jako czas trwania składający się z 42 taktów w jednostce czasu wynoszącej 1 sekundę. 

CPP
// C++ program to illustrate the utility  // function duration::count #include     #include   int main () {  using namespace std::chrono;  // std::chrono::milliseconds is an   // instantiation of std::chrono::duration:- 1 second  milliseconds mil(1000);     mil = mil*60;    std::cout << "duration (in periods): ";  std::cout << mil.count() << " milliseconds.n";    std::cout << "duration (in seconds): ";  std::cout << (mil.count() * milliseconds::period::num /   milliseconds::period::den);  std::cout << " seconds.n";  return 0; } 

Wyjście:

duration (in periods): 60000 milliseconds. duration (in seconds): 60 seconds.

Zegar

Zegar składa się z punktu początkowego (lub epoki) i częstotliwości taktowania. Na przykład zegar może mieć epokę 22 lutego 1996 r. i tykać co sekundę. C++ definiuje trzy typy zegarów:

instrukcja if-else Java
    zegar_systemowy-Jest to aktualny czas według systemu (zwykły zegar, który widzimy na pasku narzędzi komputera). Jest zapisany jako- std::chrono::system_clockstały_zegar-To monotoniczny zegar, którego nigdy nie można nastawić. Chodzi równomiernie. Jest zapisany jako- std::chrono::steady_clockzegar_wysokiej rozdzielczości- Zapewnia możliwie najkrótszy okres zaznaczenia. Jest zapisany jako-std::chrono::high_registration_clock

Punkt czasowy

Obiekt time_point wyraża punkt w czasie względem epoki zegara. Wewnętrznie obiekt przechowuje obiekt typu Duration i używa typu Clock jako odniesienia dla swojej epoki.  

CPP
// C++ program to illustrate time point // and system clock functions #include    #include  #include  // Function to calculate // Fibonacci series long fibonacci(unsigned n) {  if (n < 2) return n;  return fibonacci(n-1) + fibonacci(n-2); } int main() {  // Using time point and system_clock  std::chrono::time_point<std::chrono::system_clock> start end;  start = std::chrono::system_clock::now();  std::cout << "f(42) = " << fibonacci(42) << 'n';  end = std::chrono::system_clock::now();  std::chrono::duration<double> elapsed_seconds = end - start;  std::time_t end_time = std::chrono::system_clock::to_time_t(end);  std::cout << "finished computation at " << std::ctime(&end_time)  << "elapsed time: " << elapsed_seconds.count() << "sn"; } 

Wyjście:

f(42) = 267914296 finished computation at Wed Jan 4 05:13:48 2017 elapsed time: 2.14538s

Należy pamiętać, że precyzja i dokładność zegarów oraz czasów trwania zapewnianych przezmogą się różnić w zależności od systemu i platformy. Zawsze warto sprawdzić dokumentację swojej platformy, aby uzyskać więcej informacji.

operatora Javy

Utwórz quiz