Gegründet 2006

boost chrono 예제

Boost.Chrono는 시간 및 기간의 출력을 포맷하기 위해 다양한 스트림 조작기를 제공합니다. 예를 들어 조작기 boost::chrono::symbol_format()을 사용하면 시간 단위가 이름 대신 기호로 기록됩니다. 따라서, 실시예 37.6은 10분 동안 을 표시한다. 이 시대는 부스트에 대해 표준화되지 않았습니다::크로노::system_clock. 이 예제에서 사용되는 1970년 1월 1일은 구현에 따라 다릅니다. 그러나 1970년 1월 1일 이후의 시간을 얻으려면 to_time_t()로 전화하십시오. to_time_t()는 1970년 1월 1일 이후의 현재 시스템 시간을 std:time_t로 반환하는 정적 멤버 함수입니다. 그러나 BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING를 정의하거나 Boost.System과 연결해야 합니다. 예제 37.1은 프로세스 시작 이후 0나노초와 같은 표준 출력에 문자열을 씁니다. 이 예제에서는 운영 체제 함수를 직접 호출하지 않으며 Boost.Chrono는 몇 가지 운영 체제 함수만 사용하기 때문에 boost:chrono::process_system_cpu_clock은 0을 반환할 수 있습니다. 예제 37.1에서는 Boost.Chrono에서 제공하는 모든 시계를 소개합니다. 모든 클럭에는 타임포인트를 반환하는 멤버 함수()가 공통으로 있습니다. 모든 타임포인트는 보편적으로 유효한 타임포인트를 기준으로 합니다.

이 참조 타임포인트를 에보치(epoch)라고 합니다. 자주 사용되는 시대는 1970년 1월 1일입니다. 예제 37.1은 표시되는 모든 타임포인트에 대한 에포크를 기록합니다. 또한 ctime에서 std:clock()를 사용하여 이 시간을 얻을 수도 있습니다. 실제로 부스트::크로노::process_real_cpu_clock의 현재 구현은 std:clock()을 기반으로 합니다. 부스트::크로노::thread_clock 스레드에서 사용하는 시간을 반환합니다. 부스트:::::thread_clock으로 측정된 시간은 프로세스별이 아니라 스레드당임을 제외하면 CPU 시간과 비슷합니다. 부스트::크로노::thread_clock 스레드가 실행 중인 CPU 시간을 반환합니다. 사용자 공간과 커널 공간에서 보낸 시간을 구분하지 않습니다. 기간 및 time_point 클래스 템플릿을 Boost.Typeof에 등록합니다.

부스트::크로노::time_point_cast() 함수는 캐스트 연산자처럼 사용됩니다. 예제 37.3은 boost:chrono::time_point_cast()를 사용하여 나노초를 기반으로 한 타임포인트를 분 단위로 변환합니다. 이 경우 시간포인트를 정밀도를 잃지 않고 덜 정밀한 단위(분)로 표현할 수 없기 때문에 boost::chrono::time_point_cast()를 사용해야 합니다. 부스트:::time_point_cast()를 덜 정밀한 단위로 변환할 필요가 없습니다. ToDuration가 std::chrono::duration의 인스턴스가 아니면 함수는 오버로드 해결에 참여하지 않습니다. 마지막으로 Boost.Chrono에는 C++03 컴파일러가 있는 에뮬레이트된 자동 을 사용하여 허용하는 기간 및 time_point에 대한 형식 등록이 포함됩니다. 부스트::크로노::p로세스_user_cpu_clock은 사용자 공간에서 실행하는 데 소요된 시간만 반환합니다. 예를 들어 Windows Sleep() 함수를 통해 프로그램이 잠시 중단된 경우 절전 모드()에 소요된 시간은 부스트:크로노::process_user_cpu_clock으로 측정되지 않습니다. Boost.Chrono의 타이밍 기능을 보다 일반적으로 유용하게 만들기 위해 라이브러리는 운영 체제의 프로세스 시간 API 주위에 얇은 래퍼인 여러 클럭을 제공하여 벽 시계 시간, 사용자 CPU 시간 및 시스템 CPU 시간을 추출할 수 있습니다. 프로세스의. 월 클럭 시간은 CPU 시간과 시스템 CPU 시간의 합계입니다. (POSIX와 같은 시스템에서는 시간()에 의존합니다.

윈도우에서는 GetProcessTimes()에 의존합니다. std::chrono::duu레이션을 다른 유형의 기간으로 변환합니다. Boost.Chrono는 또한 지속 시간 동안 캐스트 연산자에게 제공합니다. 이 간단한 예제는 코드에서 볼 수 있듯이 2000ms에 대해 절전 모드입니다. BOOST_CHRONO_VERSION의 기본값은 부스트 1.55 이후 2로 변경됩니다. 조작기 부스트:::chrono::time_fmt() 시간대와 형식 문자열을 설정 하는 데 사용할 수 있습니다. 시간대는 부스트로 설정해야 합니다:::timezone::로컬 또는 부스트::크로노::표준 시간대::utc. 형식 문자열은 플래그를 사용하여 타임포인트의 다양한 구성 요소를 참조할 수 있습니다.

예를 들어 예제 37.6은 다음과 같은 표준 출력에 문자열을 씁니다: 15:46:44.

Comments are closed.