여기
struct timeval tv;
gettimeofday(&tv, NULL);
// ...
struct timeval tv2;
gettimeofday(&tv2, NULL);
int microseconds = (tv2.tv_sec - tv.tv_sec) * 1000000 + ((int)tv2.tv_usec - (int)tv.tv_usec);
int milliseconds = microseconds/1000;
struct timeval tv3;
tv3.tv_sec = microseconds/1000000;
tv3.tv_usec = microseconds%1000000;
(timersub 다른 곳에서 제공하는 표준 기능이 아니므로) 수동으로 작업을 수행하는 방법 (그리고 당신은 더 악화 만드는, 오버 플로우에 대한보고가)
현재를 C++의 버전은 더 나은 옵션을 제공합니다.
#include <chrono> // new time utilities
// new type alias syntax
using Clock = std::chrono::high_resolution_clock;
// the above is the same as "typedef std::chrono::high_resolution_clock Clock;"
// but easier to read and the syntax supports being templated
using Time_point = Clock::time_point;
Time_point tp = Clock::now();
// ...
Time_point tp2 = Clock::now();
using std::chrono::milliseconds;
using std::chrono::duration_cast;
std::cout << duration_cast<milliseconds>(tp2 - tp).count() << '\n';
직접 알아낼 수 없습니까? : 필드를 필드로 빼고,'tv_usec'가 음수이면 결과를 정규화하십시오! –
나는 'if'문장을 사용하는 대신에 더 좋은 방법이 있다고 생각했다. – user1106106