gettickcount[轉]
跨平臺(WIndows, Linux, VxWorks) getTickCount實現
[日期:2011-02-13] | 來源:Linux社區 作者:Linux |
在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(¤t, 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;
}
posted on 2011-06-09 22:15 八葉草 閱讀(1133) 評論(0) 編輯 收藏 引用 所屬分類: C++