이번은 chrono의 clock 클래스에 대해서 간단하게 설명 하겠습니다.
앞의 글들을 보신 분 들은 아시겠지만 clock 클래스를 이미 사용하고 있었습니다.
다만 저는 단 하나의 system_clock 클래스만을 사용하고 있었습니다.
chrono에는 system_clock뿐만 아닌 steady_clock과 high_resolution_clock이 있습니다.
namespace std {
namespace chrono {
class system_clock;
}}
namespace std {
namespace chrono {
class steady_clock;
}}
namespace std {
namespace chrono {
class high_resolution_clock;
}}
system_clock는 가장 일반적으로 사용하는 것으로 시스템 시간을 표현하기 위한 시간입니다.
그리고 C 런타임의 time_t와 호환성을 가지고 있습니다.
멤버 중에 to_time_t와 from_time_t가 있는데 이름을 보면 알 수 있듯이
to_time_t는 system_clock::time_point를 time_t로 변환하고,
from_time_t는 time_t를 system_clock::time_point로 변환 합니다.
// to_time_t
system_clock::time_point CurTime = system_clock::now();
std::time_t t = system_clock::to_time_t(CurTime);
// from_time_t
std::time_t t = time(NULL);
system_clock::time_point CurTime = system_clock::from_time_t(t);
steady_clock은 물리적인 시간처럼 결코 역행하지 않는 시간을 나타내기 위한 시간입니다.
사실 저는 '물리적인 시간처럼 결코 역행하지 않는 시간'이라는 것이 정확하게 무엇을 뜻하는지 잘 모르겠습니다. 다만 추측하기는 이것은 OS의 시간이 아닌 바이오스의 시간(또는 CPU)을 사용하는 것이지 않을까 생각합니다.
high_resolution_clock는 해당 플랫폼(Windows 또는 Linux 등)에서 가장 짧은 단위의 시간입니다.
이 클래스는 system_clock나 steady_clock의 다른 별칭으로 정의되기도 합니다.
이것으로 chrono에 대한 설명을 끝내겠습니다.
보통 프로그래밍에서 아주 고해상도의 시간 단위가 아닌 경우 대부분 GetTickCount() 함수를 사용했는데(Windows 에서) 앞으로는 더 간단하고 다양한 표현 방법으로 시간을 다룰 수 있는 chrono를 꼭 사용해 보시기 바랍니다^^
'C++0x' 카테고리의 다른 글
| [미리 보는 C++11] 8. Placement Insert (0) | 2012/02/27 |
|---|---|
| [미리 보는 C++11] 7. chrono - 4 (0) | 2012/02/20 |
| [미리 보는 C++11] 7. chrono - 3 (2) | 2012/01/19 |
| [미리 보는 C++11] 7. chrono - 2 (0) | 2011/12/07 |
| [미리 보는 C++11] 7. chrono - 1 (0) | 2011/11/16 |
| [미리 보는 C++11] 6. Boost 라이브러리 설치 (0) | 2011/10/12 |




댓글을 달아 주세요