zoukankan      html  css  js  c++  java
  • C/C++跨平台计时,精确到毫秒级别

    在c/c++代码中,有时需要实现计时功能,比如某个时刻开始计时,然后到另一时刻时,计算距开始计时的时刻毫秒数。
     
    通过在起始时刻和停止时刻分别调用下面的代码,返回的时间相减,便可获得这段时间的毫秒数,其跨Windows、Linux、VxWorks三个平台。

    具体来说:起始时刻为类的构造函数,停止时刻为类的析构阶段。

    #ifdef WIN32
    #define OS_WINDOWS WIN32
     

    #include <windows.h>
    #endif
    #ifdef LINUX
    #include <unistd.h>
    #include <sys/time.h>
    #include <netinet/in.h>
    #endif
    #ifdef VXWORKS
    #include "vxworks.h"
    #include <tickLib.h>
    #include <sysLib.h>
    #endif

    #define ULONAG unsigned long

    ULONGA getTickCount(void)
    {
    ULONGA currentTime;
    #ifdef WIN32
    currentTime = GetTickCount();
    #endif
    #ifdef LINUX
    struct timeval current;
    gettimeofday(&current, NULL);
    currentTime = current.tv_sec * 1000 + current.tv_usec/1000;
    #endif
    #ifdef OS_VXWORKS
    ULONGA timeSecond = tickGet() / sysClkRateGet();
    ULONGA timeMilsec = tickGet() % sysClkRateGet() * 1000 / sysClkRateGet();
    currentTime = timeSecond * 1000 + timeMilsec;
    #endif
    return currentTime;
    }

  • 相关阅读:
    leetcode第9题判断回文数
    leetcode整数反转第七题
    leetcode刷题两数之和
    找工作之旅
    C#和.Ne学习第五天
    C#和.Ne学习第四天
    C#和.Ne学习第三天
    C#和.Ne学习第二天
    C#和.Ne学习第一天
    从今天开始正事学习C#和.Net了
  • 原文地址:https://www.cnblogs.com/binbinxiang/p/2877771.html
Copyright © 2011-2022 走看看