该程序以秒为单位返回时间。我需要在微秒内返回它。
time_t timeStart = time(0);
usleep(2.5e6);
time_t timeEnd = time(0);
float R = (timeEnd - timeStart);
std::cout << R << std::endl;
如果您正在寻找更高的分辨率,您可以std::chrono::high_resolution_clock
从 C++11 开始使用。
#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()
设置时间以及时区。tv 参数是 a
struct timeval
(在 中指定):
struct timeval {
time_t tv_sec; /* seconds */
suseconds_t tv_usec; /* microseconds */
};
并给出自 Epoch 以来的秒数和微秒数(参见 time(2))。tz 参数是struct timezone
:
struct timezone {
int tz_minuteswest; /* minutes west of Greenwich */
int tz_dsttime; /* type of DST correction */
};
这个函数可以得到微秒
看看std::chrono
标题。它包含许多不同的时间操作选项,包括转换为microseconds
via的能力std::chrono::duration_cast
。