std::chrono:: high_resolution_clock
|
헤더 파일에 정의됨
<chrono>
|
||
|
class
high_resolution_clock
;
|
(C++11 이후) | |
클래스
std::chrono::high_resolution_clock
은 구현체가 제공하는 가장 작은 틱 주기를 가진 클록을 나타냅니다. 이것은
std::chrono::system_clock
이나
std::chrono::steady_clock
의 별칭일 수도 있고, 세 번째 독립적인 클록일 수도 있습니다.
std::chrono::high_resolution_clock
는
TrivialClock
요구 사항을 충족합니다.
목차 |
멤버 타입
| 유형 | 정의 |
rep
|
클록의 지속 시간 틱 수를 나타내는 산술 타입 |
period
|
초 단위로 클록의 틱 주기를 나타내는 std::ratio 타입 |
duration
|
std:: chrono :: duration < rep, period > |
time_point
|
std:: chrono :: time_point < std :: chrono :: high_resolution_clock > |
멤버 상수
|
constexpr bool
is_steady
[static]
|
true
틱 사이의 시간이 항상 일정한 경우, 즉 외부 클럭 조정이 있는 경우에도
now()
호출이 단조롭게 증가하는 값을 반환하는 경우, 그렇지 않으면
false
(public static member constant) |
멤버 함수
|
[static]
|
클럭의 현재 값을 나타내는
std::chrono::time_point
를 반환합니다
(public static member function) |
참고 사항
high_resolution_clock
사용을 둘러싼 논쟁이 있었습니다. 이 기능을 언어에 도입했다고 주장하는 Howard Hinnant은 2016년
ISO C++ Standard - Discussion 메일링 리스트
에서 이를 폐기해야 한다는 의견을 표명했습니다. 그의 근거는 표준이
high_resolution_clock
이
std::chrono::steady_clock
이나
std::chrono::system_clock
의 별칭이 될 수 있도록 허용하기 때문에, 이를 사용하면 이점 없이 프로그램에 불확실성을 더한다는 것이었습니다. 그러나 토론에 참여한 다른 이들은 이를 지지하는 입장을 표명했는데, 예를 들어
std::chrono::steady_clock
과
std::chrono::system_clock
모두 특정 해상도 보장을 제공하지 않기 때문에,
high_resolution_clock
은 공급업체가 플랫폼의 최고 해상도 클록을 제공할 기회를 줌으로써 유용한 역할을 수행한다는 점을 근거로 들었습니다. 특히 해당 플랫폼의
std::chrono::steady_clock
이나
std::chrono::system_clock
이 최고 해상도 클록이 아닐 경우에 그러합니다.
이는 종종
std::chrono::steady_clock
또는
std::chrono::system_clock
의 별칭에 불과하지만, 어느 쪽인지는 라이브러리나 구성에 따라 달라집니다.
system_clock
인 경우 단조 증가하지 않습니다(예: 시간이 역행할 수 있음). 예를 들어, 2023년 기준으로 libstdc++는 "나노초보다 높은 정밀도의 정의가 실현 가능해질 때까지"
system_clock
로 별칭을 지정합니다
[1]
, MSVC는
steady_clock
으로 지정합니다
[2]
, libc++는 C++ 표준 라이브러리 구현이 단조 시계를 지원하는 경우
steady_clock
을 사용하고, 그렇지 않으면
system_clock
을 사용합니다
[3]
.
참고 항목
|
(C++11)
|
시스템 전체 실시간 시계의 벽시계 시간
(클래스) |
|
(C++11)
|
조정되지 않는 모노토닉 시계
(클래스) |