반응형
기간을 int milli 및 float 초로 가져 오는 방법 ?
타이머와 기간에 chrono 라이브러리를 사용하려고합니다.
나는 Duration frameStart;
(앱 시작부터) 및 Duration frameDelta;
(프레임 사이의 시간 ) 을 가질 수 있기를 원합니다.
frameDelta
기간을 밀리 초와 부동 초로 가져올 수 있어야합니다 .
새로운 C ++ 11 <chrono>
라이브러리를 어떻게 사용합니까? 나는 그것에 대해 일하고 인터넷 검색을 해왔다 (정보가 희박합니다). 코드는 많이 템플릿 화되어 있고 특수 캐스트와 사물이 필요합니다.이 라이브러리를 올바르게 사용하는 방법을 알 수 없습니다.
이것이 당신이 찾고있는 것입니까?
#include <chrono>
#include <iostream>
int main()
{
typedef std::chrono::high_resolution_clock Time;
typedef std::chrono::milliseconds ms;
typedef std::chrono::duration<float> fsec;
auto t0 = Time::now();
auto t1 = Time::now();
fsec fs = t1 - t0;
ms d = std::chrono::duration_cast<ms>(fs);
std::cout << fs.count() << "s\n";
std::cout << d.count() << "ms\n";
}
나를 위해 인쇄합니다.
6.5e-08s
0ms
"밀리 초 및 부동 초"가 무엇을 의미하는지 모르겠지만 이것은 당신에게 아이디어를 줄 것입니다.
#include <chrono>
#include <thread>
#include <iostream>
int main()
{
auto then = std::chrono::system_clock::now();
std::this_thread::sleep_for(std::chrono::seconds(1));
auto now = std::chrono::system_clock::now();
auto dur = now - then;
typedef std::chrono::duration<float> float_seconds;
auto secs = std::chrono::duration_cast<float_seconds>(dur);
std::cout << secs.count() << '\n';
}
당신이 요구하는 것이 무엇인지 추측하십시오. 밀리 초 프레임 타이머로 다음과 같이 작동하는 것을 찾고 있다고 가정합니다.
double mticks()
{
struct timeval tv;
gettimeofday(&tv, 0);
return (double) tv.tv_usec / 1000 + tv.tv_sec * 1000;
}
std::chrono
대신 사용 합니다.
double mticks()
{
typedef std::chrono::high_resolution_clock clock;
typedef std::chrono::duration<float, std::milli> duration;
static clock::time_point start = clock::now();
duration elapsed = clock::now() - start;
return elapsed.count();
}
도움이 되었기를 바랍니다.
에서 AAA 스타일 사용하여 명시 적으로 관용구 초기화 입력 :
#include <chrono>
#include <iostream>
int main(){
auto start = std::chrono::high_resolution_clock::now();
// Code to time here...
auto end = std::chrono::high_resolution_clock::now();
auto dur = end - start;
auto i_millis = std::chrono::duration_cast<std::chrono::milliseconds>(dur);
auto f_secs = std::chrono::duration_cast<std::chrono::duration<float>>(dur);
std::cout << i_millis.count() << '\n';
std::cout << f_secs.count() << '\n';
}
반응형
'Development Tip' 카테고리의 다른 글
Java URLConnection의 사용자 에이전트 설정 (0) | 2020.10.23 |
---|---|
MySQL WHERE : "! ="또는 "같지 않음"을 작성하는 방법은 무엇입니까? (0) | 2020.10.23 |
AngularJS로 URL 인코딩 앵커 링크를 생성하는 방법은 무엇입니까? (0) | 2020.10.23 |
Java 객체 참조를 반환하는 것이 원시 반환보다 훨씬 느린 이유 (0) | 2020.10.23 |
Java에서 두 문자를 추가 한 결과는 int 또는 char입니까? (0) | 2020.10.23 |