https://blog.youkuaiyun.com/xiaoma_bk/article/details/107869031
double GetThreadCpuTimeSeconds() {
#ifndef WIN32
struct timespec thread_cpu_time;
CHECK(clock_gettime(CLOCK_THREAD_CPUTIME_ID, &thread_cpu_time) == 0)
<< std::strerror(errno);
return thread_cpu_time.tv_sec + 1e-9 * thread_cpu_time.tv_nsec;
#else
return 0.;
#endif
}
Linux提供clock_gettime接口,获取系统时间。clock_gettime( ) 提供了纳秒的精确度,给程序计时可是不错哦;
函数的原型如下
#include <time.h> //头文件
int clock_gettime(clockid_t clk_id, struct timespect *tp);
clockid_t clk_id用于指定计时时钟的类型,对于我们Programmr以下四种比较常用:
CLOCK_REALTIME:系统实时时间,随系统实时时间改变而改变,即从UTC1970-1-1 0:0:0开始计时,中间时刻如果系统时间被用户该成其他,则对应的时间相应改变CLOCK_MONOTONIC:从系统启动这一刻起开始计时,不受系统时间被用户改变的影响CLOCK_PROCESS_CPUTIME_ID:本进程到当前代码系统CPU花费的时间CLOCK_THREAD_CPUTIME_ID:本线程到当前代码系统CPU花费的时间
其中:timespec:
/* POSIX.1b structure for a time value. This is like a `struct timeval' but
has nanoseconds instead of microseconds. */
struct timespec
{
__time_t tv_sec; /* Seconds. */
__syscall_slong_t tv_nsec; /* Nanoseconds. */
};
该博客介绍了如何使用Linux系统API `clock_gettime` 获取线程CPU时间。`CLOCK_THREAD_CPUTIME_ID` 选项用于获取当前线程的CPU使用时间,精确到纳秒。此外,文章还列举了其他几种计时器类型,如`CLOCK_REALTIME`、`CLOCK_MONOTONIC`和`CLOCK_PROCESS_CPUTIME_ID`,并解释了它们的区别。
2309

被折叠的 条评论
为什么被折叠?



