呵呵呵呵呵

萝莉有三好,柔体 轻音 易推倒。女神有三宝,干嘛 呵呵 去洗澡。宅男有三好:Dota 基友 破电脑。


linux中实时函数clock_gettime示例

linux中实时函数clock_gettime示例

原型如下:
int clock_gettime(clockid_t clk_id, struct timespec *tp);

它有以下的特点:
1)它也有一个时间结构体:timespec ,timespec计算时间次数的单位是十亿分之一秒.
strace timespec{
 time_t tv_sec;
 long tv_nsec;
}

2)clockid_t是确定哪个时钟类型.

CLOCK_REALTIME: 标准POSIX实时时钟
CLOCK_MONOTONIC: POSIX时钟,以恒定速率运行;不会复位和调整,它的取值和CLOCK_REALTIME是一样的.
CLOCK_PROCESS_CPUTIME_ID和CLOCK_THREAD_CPUTIME_ID是CPU中的硬件计时器中实现的.

代码如下:

//filename:test3.c
//gcc test3.c -lrt -o test3

#include<time.h>
#include<stdio.h>
#include<stdlib.h>

#define MILLION 1000000

int main(void)
{
        long int loop = 1000;
        struct timespec tpstart;
        struct timespec tpend;
        long timedif;

        clock_gettime(CLOCK_MONOTONIC, &tpstart);

        while (--loop){
                system("cd");
        }

        clock_gettime(CLOCK_MONOTONIC, &tpend);
        timedif = MILLION*(tpend.tv_sec-tpstart.tv_sec)+(tpend.tv_nsec-tpstart.tv_nsec)/1000;
        fprintf(stdout, "it took %ld microseconds\n", timedif);

        return 0;
}


编译:
gcc test3.c -lrt -o test3

计算时间:
time ./test3
it took 4610812 microseconds

real    0m4.625s
user    0m0.156s
sys     0m4.344s

更多内容:

linux中times()时间函数示例
linux中clock函数示例
Linux下获取毫秒纳秒时间精度的深入分析
BCB获取CPU的时钟周期数RDTSC的方法
通过机器指令RDTSC读取TSC时间戳代码

本文链接地址:http://www.hehehehehe.cn/i/821.html