logo

C++의 크로노

시간 작업에 사용할 유형 및 함수 모음을 제공하는 C++ 헤더입니다. 이는 C++ STL(표준 템플릿 라이브러리)의 일부이며 C++11 이상 버전에 포함되어 있습니다.

system_clock steady_clock 및 high_solution_clock의 세 가지 주요 시계 유형을 제공합니다. 이 시계는 다양한 방법으로 시간을 측정하는 데 사용됩니다.

system_clock은 시스템 전체의 실시간 벽시계를 나타냅니다. 시스템의 시간 조정에 영향을 받습니다.
steady_clock은 시스템 시간 변경에 영향을 받지 않고 단조롭게 증가하는 시계를 나타냅니다.
high_solution_clock은 시스템에서 사용 가능한 가장 짧은 틱 주기를 갖는 시계입니다.



관계이다

기간을 포함한 기간 유형 모음도 제공합니다.기간을 나타내는 데 사용할 수 있습니다. Rep는 표현 유형(예: int 또는 long)이고 Period는 기간의 비율(예: 나노초 또는 초)입니다.
추가적으로time_point를 포함한 시점 유형 모음을 제공합니다.특정 시점을 나타내는 데 사용할 수 있습니다. Clock은 시계 유형(예: system_clock)이고 Duration은 기간 유형(예: 초)입니다.

Chrono 라이브러리는 날짜와 시간을 처리하는 데 사용됩니다. 이 라이브러리는 타이머와 시계가 시스템마다 다를 수 있다는 사실을 처리하여 시간이 지남에 따라 정밀도 측면에서 향상되도록 설계되었습니다. 크로노의 독특한 점은 특정 시계에서 지속 시간과 시점(timepoint)을 분리하여 정밀 중립 개념을 구현합니다. chrono는 헤더의 이름이자 하위 네임스페이스의 이름입니다. 이 헤더의 모든 요소(common_type 특수화 제외)는 std 네임스페이스(대부분의 표준 라이브러리와 마찬가지로) 바로 아래에 정의되지 않고 std::chrono 네임스페이스 . 이 헤더의 요소는 시간을 다룹니다. 이는 주로 세 가지 개념을 통해 수행됩니다.

지속

기간 객체는 1분, 2시간 또는 10밀리초와 같은 수로 시간 범위를 표현합니다. 예를 들어 '42초'는 1초 시간 단위의 42틱으로 구성된 기간으로 표시될 수 있습니다. 

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; } 

산출:

전문가 시스템
duration (in periods): 60000 milliseconds. duration (in seconds): 60 seconds.

시계

시계는 시작점(또는 에포크)과 틱 속도로 구성됩니다. 예를 들어 시계의 시점은 1996년 2월 22일이고 매초마다 똑딱거릴 수 있습니다. C++에서는 세 가지 시계 유형을 정의합니다.

    시스템_시계-시스템(컴퓨터 도구 모음에 표시되는 일반 시계)에 따른 현재 시간입니다. 이는 std::chrono::system_clock으로 작성됩니다.꾸준한_시계- 절대로 조정되지 않는 단조로운 시계입니다. 균일한 속도로 진행됩니다. 이는 다음과 같이 작성됩니다. std::chrono::steady_clock고해상도_시계- 가능한 가장 작은 틱 주기를 제공합니다. -std::chrono::high_solution_clock으로 작성됩니다.

시점

time_point 개체는 시계의 신기원을 기준으로 특정 시점을 표현합니다. 내부적으로 객체는 기간 유형의 객체를 저장하고 시계 유형을 해당 에포크에 대한 참조로 사용합니다.  

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"; } 

산출:

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

다음에서 제공하는 시계 및 지속 시간의 정밀도와 정확성을 염두에 두는 것이 중요합니다.시스템과 플랫폼에 따라 다를 수 있으며 자세한 내용은 항상 플랫폼 설명서를 확인하는 것이 좋습니다.

고빈다 배우

퀴즈 만들기