C/C++ time_t以微秒为单位

C/C++ time_t in microseconds

本文关键字:为单位 C++ time      更新时间:2023-10-16

此程序以秒为单位返回时间。我需要在几微秒内返回它。

time_t timeStart = time(0);
usleep(2.5e6);
time_t timeEnd = time(0);
float R = (timeEnd - timeStart);
std::cout << R << std::endl;

如果您正在寻找更高的分辨率,则可以使用C++11 中的std::chrono::high_resolution_clock

#include <chrono>
using namespace std::chrono;
high_resolution_clock::time_point t1 = high_resolution_clock::now();
/* some extensive action... */
usleep(2.5e6);
high_resolution_clock::time_point t2 = high_resolution_clock::now();
duration<double> time_span = duration_cast<duration<double>>(t2 - t1);
std::cout << "It took me " << time_span.count() << " seconds.";
std::cout << std::endl;

输出类似的东西

It took me 0.091001 seconds.

http://www.cplusplus.com/reference/chrono/high_resolution_clock/now/的例子

使用函数 gettimeofday

#include <sys/time.h>
int gettimeofday(struct timeval *tv, struct timezone *tz);
int settimeofday(const struct timeval *tv, const struct timezone *tz);

glibc 的特征测试宏要求(见feature_test_macros(7)):

settimeofday(): _BSD_SOURCE

描述

gettimeofday()settimeofday()函数可以获取和设置时间和时区。 电视论点是一个 struct timeval(如 中指定):

struct timeval {
    time_t      tv_sec;     /* seconds */
    suseconds_t tv_usec;    /* microseconds */
};

并给出自纪元以来的秒数和微秒数(参见 time(2))。 tz 参数是一个struct timezone

struct timezone {
    int tz_minuteswest;     /* minutes west of Greenwich */
    int tz_dsttime;         /* type of DST correction */
};

此功能可以获得微秒

看看std::chrono标题。它包含许多不同的时间操作选项,包括通过std::chrono::duration_cast转换为microseconds的能力。