打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
clock get ns
#ifndef _CLOCK_TIME_H_
#define _CLOCK_TIME_H_

#include <stdio.h>
#include <time.h>
#include <sys/time.h>

unsigned long GetTickCount_ms(int clk_id);

unsigned long GetTickCount_us(int clk_id);

unsigned long GetTickCount_ns(int clk_id);

#endif


================================================================


#include "clock_time.h"


/*

#include <time.h>

获取指定类型时钟的精确度
int clock_getres(clockid_t clk_id, struct timespec *res);

取得和设置clk_id指定的时间
int clock_gettime(clockid_t clk_id, struct timespec *tp);

int clock_settime(clockid_t clk_id, const struct timespec *tp);

Link with -lrt.

CLOCK_BOOTTIME: 从系统启动这一刻开始计时,包括休眠时间,受到settimeofday的影响。


CLOCK_REALTIME
     System-wide  real-time  clock.   Setting this clock requires appropriate privi‐
     leges.
     统实时时间,随系统实时时间改变而改变,即从UTC1970-1-1 0:0:0开始计时,中间时刻如果系统时间被用户该成其他,则对应的时间相应改变

CLOCK_MONOTONIC
     Clock that cannot be set and represents monotonic time since  some  unspecified
     starting point.
     从系统启动这一刻起开始计时,不受系统时间被用户改变的影响

CLOCK_MONOTONIC_RAW (since Linux 2.6.28; Linux-specific)
     Similar  to  CLOCK_MONOTONIC,  but provides access to a raw hardware-based time
     that is not subject to NTP adjustments.
     与CLOCK_MONOTONIC一样,系统开启时计时,但不受NTP影响,受adjtime影响。     

CLOCK_MONOTONIC_COARSE: 如同CLOCK_MONOTONIC,但有更快的获取速度和更低
     一些的精确度。受NTP影响。


CLOCK_PROCESS_CPUTIME_ID
      High-resolution per-process timer from the CPU.
      本进程到当前代码系统CPU花费的时间

CLOCK_THREAD_CPUTIME_ID
      Thread-specific CPU-time clock.
      本线程到当前代码系统CPU花费的时间


return 0 for success,  or  -1  for failure

其他函数
date(1),   adjtimex(2),   gettimeofday(2),   settimeofday(2),  time(2),  clock_getcpu‐
      clockid(3), ctime(3), ftime(3), pthread_getcpuclockid(3), sysconf(3), time(7)


*/

/*
struct timespec
{
    time_t tv_sec;  // 秒
    long tv_nsec;   // 纳秒
};
*/

// 获得毫秒数  注:编译时需添加 -lrt
unsigned long ClockGetTime_second(int clk_id)
{
    struct timespec ts;

    clock_gettime(clk_id, &ts);
    
    return(ts.tv_sec+ts.tv_nsec/1000000000);
}

// 获得毫秒数  注:编译时需添加 -lrt
unsigned long ClockGetTime_ms(int clk_id)
{
    struct timespec ts;

    clock_gettime(clk_id, &ts);
    
    return(ts.tv_sec*1000+ts.tv_nsec/1000000);
}

// 获得微秒数
unsigned long ClockGetTime_us(int clk_id)
{
    struct timespec ts;

    clock_gettime(clk_id, &ts);
    
    return(ts.tv_sec*1000000+ts.tv_nsec/1000);
}

// 获得纳秒数
unsigned long ClockGetTime_ns(int clk_id)
{
    struct timespec ts;

    clock_gettime(clk_id, &ts);
    
    return(ts.tv_sec*1000*1000*1000+ts.tv_nsec);
}

#if 0
int main()
{
    sleep(2);

    printf("TTT------------ms------------\n");
    printf("TTT--CLOCK_REALTIME-----------[%lu]\n", GetTickCount_ms(CLOCK_REALTIME));
    printf("TTT--CLOCK_MONOTONIC----------[%lu]\n", GetTickCount_ms(CLOCK_MONOTONIC));
    printf("TTT--CLOCK_MONOTONIC_RAW------[%lu]\n", GetTickCount_ms(CLOCK_MONOTONIC_RAW));
    printf("TTT--CLOCK_PROCESS_CPUTIME_ID-[%lu]\n", GetTickCount_ms(CLOCK_PROCESS_CPUTIME_ID));
    printf("TTT--CLOCK_THREAD_CPUTIME_ID--[%lu]\n", GetTickCount_ms(CLOCK_THREAD_CPUTIME_ID));
    

    printf("\nTTT------------us------------\n");
    printf("TTT--CLOCK_REALTIME-----------[%lu]\n", GetTickCount_us(CLOCK_REALTIME));
    printf("TTT--CLOCK_MONOTONIC----------[%lu]\n", GetTickCount_us(CLOCK_MONOTONIC));
    printf("TTT--CLOCK_MONOTONIC_RAW------[%lu]\n", GetTickCount_us(CLOCK_MONOTONIC_RAW));
    printf("TTT--CLOCK_PROCESS_CPUTIME_ID-[%lu]\n", GetTickCount_us(CLOCK_PROCESS_CPUTIME_ID));
    printf("TTT--CLOCK_THREAD_CPUTIME_ID--[%lu]\n", GetTickCount_us(CLOCK_THREAD_CPUTIME_ID));

    printf("\nTTT------------ns------------\n");
    printf("TTT--CLOCK_REALTIME-----------[%lu]\n", GetTickCount_ns(CLOCK_REALTIME));
    printf("TTT--CLOCK_MONOTONIC----------[%lu]\n", GetTickCount_ns(CLOCK_MONOTONIC));
    printf("TTT--CLOCK_MONOTONIC_RAW------[%lu]\n", GetTickCount_ns(CLOCK_MONOTONIC_RAW));
    printf("TTT--CLOCK_PROCESS_CPUTIME_ID-[%lu]\n", GetTickCount_ns(CLOCK_PROCESS_CPUTIME_ID));
    printf("TTT--CLOCK_THREAD_CPUTIME_ID--[%lu]\n", GetTickCount_ns(CLOCK_THREAD_CPUTIME_ID));
    
    return 0;
}
#endif
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
[转]ubuntu 上让CPU占用率画曲线(一)
linux下常用的几个时间函数:time,gettimeofday,clock
Py之monotonic:monotonic的简介、安装、使用方法之详细攻略
Linux时间子系统之三:时间的维护者:timekeeper
Linux下如何计算函数的执行时间?实例代码直接拿去用
Posix timers clock
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服