windows 高精度時間獲取
//不好意思,困了,懶得解釋了
//標頭檔案File:TimeTool.h
#ifndef TIMETOOL_H_INCLUDED
#define TIMETOOL_H_INCLUDED
#include <windows.h>
typedef struct PfmTest
{
LARGE_INTEGER liStart;
LARGE_INTEGER liEnd;
LARGE_INTEGER liPerfFreq;
}PfmTest;
/**
*
*@case
void main()
{
printf("開始\n");
InitPfmTime();
BeginPfmTime();
for(int i = 0; i < 10000; ++i);
double timeInterval = EndPfmTime();
printf("結束,總用時:%f\n", timeInterval);
BeginPfmTime();
for(int i = 0; i < 500; ++i);
double timeInterval = EndPfmTime();
printf("結束,總用時:%f\n", timeInterval);
}
*/
void InitPfmTime();
void BeginPfmTime();
/**
*@return double 自上次呼叫BeginPfmTime()到本函式之間的時間間隔,單位為 秒(s).
*/
double EndPfmTime();
/**
*
*@case
void main()
{
printf("開始\n");
LARGE_INTEGER temp;
InitPfmTimeWithArg(&temp);
BeginPfmTimeWithArg(&temp);
for(int i = 0; i < 10000; ++i);
double timeInterval = EndPfmTimeWithArg(&temp);
printf("結束,總用時:%f\n", timeInterval);
BeginPfmTimeWithArg(&temp);
for(int i = 0; i < 500; ++i);
double timeInterval = EndPfmTimeWithArg(&temp);
printf("結束,總用時:%f\n", timeInterval);
}
*/
void InitPfmTimeWithArg(PfmTest * pfmTest);
void BeginPfmTimeWithArg(PfmTest * pfmTest);
double EndPfmTimeWithArg(PfmTest * pfmTest);
#endif //TIMETOOL_H_INCLUDED
//原始檔File:TimeTool.cpp
#include "TimeTool.h"
static PfmTest pfmTest;
void InitPfmTime()
{
QueryPerformanceFrequency(&(pfmTest.liPerfFreq));
}
void BeginPfmTime()
{
QueryPerformanceCounter(&(pfmTest.liStart));
}
double EndPfmTime()
{
QueryPerformanceCounter(&(pfmTest.liEnd));
double timeSecond = (double)(pfmTest.liEnd.QuadPart - pfmTest.liStart.QuadPart) / (double)(pfmTest.liPerfFreq.QuadPart);
return timeSecond;
}
void InitPfmTimeWithArg(PfmTest * pfmTest)
{
QueryPerformanceFrequency(&(pfmTest->liPerfFreq));
}
void BeginPfmTimeWithArg(PfmTest * pfmTest)
{
QueryPerformanceCounter(&(pfmTest->liStart));
}
double EndPfmTimeWithArg(PfmTest * pfmTest)
{
QueryPerformanceCounter(&(pfmTest->liEnd));
double timeSecond = (double)(pfmTest->liEnd.QuadPart - pfmTest->liStart.QuadPart) / (double)(pfmTest->liPerfFreq.QuadPart);
return timeSecond;
}
//測試檔案File:App.cpp
#include <stdlib.h>
#include <stdio.h>
#include "TimeTool.h"
void main()
{
printf("開始\n");
LARGE_INTEGER temp;
InitPfmTimeWithArg(&temp);
BeginPfmTimeWithArg(&temp);
for(int i = 0; i < 10000; ++i);
double timeInterval = EndPfmTimeWithArg(&temp);
printf("結束,總用時:%f\n", timeInterval);
BeginPfmTimeWithArg(&temp);
for(int i = 0; i < 500; ++i);
double timeInterval = EndPfmTimeWithArg(&temp);
printf("結束,總用時:%f\n", timeInterval);
printf("開始\n");
InitPfmTime();
BeginPfmTime();
for(int i = 0; i < 10000; ++i);
double timeInterval = EndPfmTime();
printf("結束,總用時:%f\n", timeInterval);
BeginPfmTime();
for(int i = 0; i < 500; ++i);
double timeInterval = EndPfmTime();
printf("結束,總用時:%f\n", timeInterval);
}
相關推薦
windows 高精度時間獲取
//不好意思,困了,懶得解釋了 //標頭檔案File:TimeTool.h #ifndef TIMETOOL_H_INCLUDED #define TIMETOOL_H_INCLUDED #include <windows.h> typedef struct P
linux獲取高精度時間的方法
編寫linux下應用程式的時候,有時候會用到高精度相對時間的概念,比如間隔100ms。那麼應該使用哪個時間函式更準確呢? 1、time 該函式返回的是自1970年以來的秒數,顯然精度不夠,不能使用 2、gettimeofday
linux 下高精度時間
定時器 精度 處理 turn 通過 公司 cti include processor 今天在公司代碼中看到了使用select函數的超時功能作定時器的用法,便整理了如下幾個Linux下的微秒級別的定時器。在我的Ubutu10.10 雙核環境中,編譯通過。 [cpp] vi
Ubuntu上C++高精度時間的測量
clock()函式的精確度是10毫秒(ms) times()函式的精確度是10毫秒(ms) gettimofday()函式的精確度是微秒(μs) clock_gettime()函式的計量單位為十億
c/c++ 高精度時間測試
測量程式執行時間(ms級) 高精度時控函式QueryPerformanceFrequency(),QueryPerformanceCounter() 原理:QueryPerformanceCounter()這個函式返回高精確度效能計數器的值,它可以以微妙為單位計時.但是Qu
【vc】高精度時間函式的使用
方法一: 函式定義如下: int UsSleep(int us);//返回實際的微秒延時時間 程式碼實現如下: 1 //引數一表示 需要等待的時間 微秒為單位 2 int UsSleep(int us) 3 { 4 //儲存計數的聯合 5 LARGE_INTE
【vc】高精度時間函數的使用
amp color 定義 定時 表示 per 2個 target title 方法一: 函數定義如下: int UsSleep(int us);//返回實際的微秒延時時間 代碼實現如下: 1 //參數一表示 需要等待的時間 微秒為單位 2 int UsSleep(
linux下的高精度時間函式
apue2nd書中 沒有對於linux平臺下時間函式的例子,僅僅是介紹了一下api,不太方便我們使用,這裡找了一些例子, #include <stdio.h>#include <time.h>#include <sys/timeb.h>in
Windows高精度微秒級(併發)定時器實現
自從上次封裝微秒延時函式後,利用空閒時間試著封裝一個微秒定時器(類似MFC定時器形式)使用起來效果還不錯。 關於定時器的幾點介紹: 1.設計採用了自動釋放定時器節點方式(增加虛解構函式在內部做相關釋放判斷,即使用完不釋放節點也沒關係); 2
C++中獲得CPU高精度時間戳( 納秒級 )
對關注效能的程式開發人員而言,一個好的計時部件既是益友,也是良師。計時器既可以作為程式元件幫助程式設計師精確的控制程式程序,又是一件有力的除錯武器,在有經驗的程式設計師手裡可以儘快的確定程式的效能瓶頸,或者對不同的演算法作出有說服力的效能比較。 在Windows平臺下,常用
Windows下的高精度定時器實現及精確時刻獲取
通訊、VOIP、視訊等領域的很多核心技術對時間精度的要求非常高,比如資料採集、時間同步、媒體流平滑控制、擁塞演算法等等,很多技術都是以毫秒為單位來進行計算和控制的。但是Windows設計之初並不是以實時系統為目標的,所以Windows系統的時間精度一直不高,實際最小單位是1
Linux時間子系統之六:高精度定時器(HRTIMER)的原理和實現
3.4 size 屬於 running return repr 而是 復雜度 ctu 上一篇文章,我介紹了傳統的低分辨率定時器的實現原理。而隨著內核的不斷演進,大牛們已經對這種低分辨率定時器的精度不再滿足,而且,硬件也在不斷地發展,系統中的定時器硬件的精度也越來越高,這也給
當前本地時間高精度
oid end include win point lock OS bsp RR 1 #include <chrono> 2 void current_time() 3 { 4 // 當前時間點 5 std::chrono::syst
windows平臺下的高精度定時器
class CHTimerListener { public: virtual void Update() = 0; }; class CHTimer { public: CHTime
Android裝置通過NTRIP協議獲取差分資料實現高精度定位
轉載自http://www.jianshu.com/p/7b93952febc0 專案背景 最近在做一個Android的APP專案中有個功能,需要用到Ntrip協議從差分伺服器獲取差分資料,並將差分資料通過藍芽傳送至高精度手持裝置(華信TR502接收機)之後返回固定解的高精度定位資料(NMEA0813協
用windows搭建ntp時間伺服器(從上級獲取時間,併為客戶機提供時間)
原文連結:https://blog.csdn.net/dsg333/article/details/44854221. 將伺服器型別更改為 NTP。為此,請按照下列步驟操作:a. 單擊“開始”,單擊“執行”,鍵入 regedit,然後單擊“確定”。 b. 找到並單擊下面的
windows bat批處理獲取當前時間
程式碼例項 set d=%date:~0,10% set t=%time:~0,8% echo %d% %t% 解釋 格式: %date:~x,y%以及%time:~x,y% 說明: x是開始位置,y是取得字元數 比如說我要獲取完整的日期和時間, 格式: %d
在Windows批處理中獲取系統日期、時間戳記
在寫Windows批處理指令碼時,常常需要獲取系統日期、時間戳記,用作檔名、資料夾名、log等等。 本文介紹瞭如何獲取自訂的系統日期、時間戳記。 首先,在Windows中,系統日期由以下引數獲得: %date% 系統時間則由以下引數獲得: %time% 我們在Win
WINDOWS 時間獲取與精確時間獲取
對關注效能的程式開發人員而言,一個好的計時部件既是益友,也是良師。計時器既可以作為程式元件幫助程式設計師精確的控制程式程序,又是一件有力的除錯武器,在有經驗的程式設計師手裡可以儘快的確定程式的效能瓶頸,或者對不同的演算法作出有說服力的效能比較。 在Windows平臺下,常用的計時器有兩種,一種是time
Windows/Linux高精度計時器(C++)
/* * Linux/Windows 系統高精度計時器 */ #ifndef __LX_TIMER_H__ #define __LX_TIMER_H__ #ifdef WI