Program Language/C & C++
[C++] std::chrono로 시간 측정하기
야곰야곰+책벌레
2022. 1. 21. 14:08
728x90
반응형
std::chrono가 제공되면서 시간 연산이 더욱 쉬워졌다. 기존에 정밀한 단위의 시간을 측정하려면 OS에서 제공하는 API를 사용해야 했는데 이제는 번거로움이 사라졌다.
#include <chrono>
#include <iostream>
using namespace std;
int main()
{
std::chrono::system_clock::time_point start = std::chrono::system_clock::now();
for (int i = 0; i < 10000000; i++)
std::sqrt(10000000000);
std::chrono::duration<double> sec = std::chrono::system_clock::now() - start;
std::cout << "time : " << sec.count() << "s" << std::endl;
return 0;
}
std::chrono::system_clock으로 시스템 시간을 쉽게 가져올 수 있다. 시간을 단순히 double로 나타내었지만 chrono에서 제공하는 시간 단위들을 이용하여 쉽게 정수형으로 표현할 수 있다.
#include <chrono>
#include <iostream>
using namespace std;
int main()
{
std::chrono::system_clock::time_point start = std::chrono::system_clock::now();
for (int i = 0; i < 10000000; i++)
std::sqrt(10000000000);
std::chrono::duration<double> sec = std::chrono::system_clock::now() - start;
std::cout << "time : " << sec.count() << "s" << std::endl;
std::chrono::nanoseconds ns = std::chrono::duration_cast<std::chrono::nanoseconds>(sec);
std::cout << "time(ns) : " << ns.count() << "ns" << std::endl;
std::chrono::microseconds us = std::chrono::duration_cast<std::chrono::microseconds>(sec);
std::cout << "time(us) : " << us.count() << "us" << std::endl;
std::chrono::milliseconds ms = std::chrono::duration_cast<std::chrono::milliseconds>(sec);
std::cout << "time(ms) : " << ms.count() << "ms" << std::endl;
return 0;
}
시간 단위에 맞게 표현할 수 있다. chrono의 시간 타입은 아래와 같다.
std::chrono::nanoseconds // 나노세컨드. 10억 분의 1초
std::chrono::microseconds // 마이크로 세컨드. 100만 분의 1초
std::chrono::milliseconds // 밀리 세컨드. 1000분의 1초
std::chrono::seconds // 초
std::chrono::minutes // 분
std::chrono::hours // 시
728x90
반응형