青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 297,  comments - 15,  trackbacks - 0
介紹
       我們在衡量一個函數運行時間,或者判斷一個算法的時間效率,或者在程序中我們需要一個定時器,定時執行一個特定的操作,比如在多媒體中,比如在游戲中等,都會用到時間函數。還比如我們通過記錄函數或者算法開始和截至的時間,然后利用兩者之差得出函數或者算法的運行時間。編譯器和操作系統為我們提供了很多時間函數,這些時間函數的精度也是各不相同的,所以,如果我們想得到準確的結果,必須使用合適的時間函數。現在我就介紹windows下的幾種常用時間函數。
1Sleep函數
使用:sleep(1000),在Windows和Linux下1000代表的含義并不相同,Windows下的表示1000毫秒,也就是1秒鐘;Linux下表示1000秒,Linux下使用毫秒級別的函數可以使用usleep。
原理:sleep函數是使調用sleep函數的線程休眠,線程主動放棄時間片。當經過指定的時間間隔后,再啟動線程,繼續執行代碼。Sleep函數并不能起到定時的作用,主要作用是延時。在一些多線程中可能會看到sleep(0);其主要目的是讓出時間片。
精度:sleep函數的精度非常低,當系統越忙它精度也就越低,有時候我們休眠1秒,可能3秒后才能繼續執行。它的精度取決于線程自身優先級、其他線程的優先級,以及線程的數量等因素。
2MFC下的timer事件
       使用:1.調用函數SetTimer()設置定時間隔,如SetTimer(0,100,NULL)即為設置100毫秒的時間間隔;2.在應用程序中增加定時響應函數OnTimer(),并在該函數中添加響應的處理語句,用來完成時間到時的操作。
    原理:sleep函數一樣。不同的是timer是一個定時器,可以指定回調函數,默認為OnTimer()函數。
    精度:timer事件的精度范圍在毫米級別,系統越忙其精度也就越差。
3C語言下的Time
       使用:time_t t;time(&t);Time函數是獲取當前時間。
    原理:time函數主要用于獲取當前時間,比如我們做一個電子時鐘程序,就可以使用此函數,獲取系統當前的時間。
    精度:秒級別
4COM對象中的COleDateTime,COleDateTimeSpan
    使用:COleDateTime start_time = COleDateTime::GetCurrentTime();
COleDateTimeSpan end_time = COleDateTime::GetCurrentTime()-start_time;
While(end_time.GetTotalSeconds() < 2)
{
// 處理延時或定時期間能處理其他的消息
DoSomething()
end_time = COleDateTime::GetCurrentTime-start_time;
}
原理:以上代表延時2秒,而這兩秒內我們可以循環調用DoSomething(),從而實現在延時的時候我們也能夠處理其他的函數,或者消息。COleDateTime,COleDateTimeSpanMFCCTimeCTimeSpanCOM中的應用,所以,上面的方法對于CTime,CTimeSpa同樣有效。
       精度:秒級別
5C語言下的時鐘周期clock()
       使用:   clock_t start = clock();
              Sleep(100);
              clock_t end = clock();
          double d = (double)(start - end) / CLOCKS_PER_SEC;
       原理:clock()是獲取計算機啟動后的時間間隔。
精度:ms級別,對于短時間內的定時或者延時可以達到ms級別,對于時間比較長的定時或者延遲精度還是不夠。在windows下CLOCKS_PER_SEC為1000。
6Windows下的GetTickCount()
使用: DWORD start = GetTickCount();
        Sleep(100);
        DWORD end = GetTickCount();
原理:GetTickCount()是獲取系統啟動后的時間間隔。通過進入函數開始定時,到退出函數結束定時,從而可以判斷出函數的執行時間,這種時間也并非是函數或者算法的真實執行時間,因為在函數和算法線程不可能一直占用CPU,對于所有判斷執行時間的函數都是一樣,不過基本上已經很準確,可以通過查詢進行定時。GetTickCount()Clock()函數是向主板BIOSreal time clock時間,會有中斷產生,以及延遲問題。
精度:WindowsNT 3.5以及以后版本精度是10ms,它的時間精度比clock函數的要高,GetTickCount()常用于多媒體中。
7WindowstimeGetTime
使用:需要包含Mmsystem.h,Windows.h,加入靜態庫Winmm.lib.
timeBeginPeriod(1);
DWORD start = timeGetTime();
              Sleep(100);
          DWORD end = timeGetTime();

timeEndPeriod(1);
原理:timeGetTime也時常用于多媒體定時器中,可以通過查詢進行定時。通過查詢進行定時,本身也會影響定時器的定時精度。
精度:毫秒,與GetTickCount()相當。但是和GetTickCount相比,timeGetTime可以通過timeBeginPeriod,timeEndPeriod設置定時器的最小解析精度, timeBeginPeriod,timeEndPeriod必須成對出現。
8windows下的timeSetEvent
使用:還記的VC下的Timer嗎?Timer是一個定時器,而以上我們提到幾種時間函數或者類型,實現定時功能只能通過輪訓來實現,也就是必須另外創建一個線程單獨處理,這樣會影響定時精度,好在windows提供了內置的定時器timeSetEvent,函數原型為
MMRESULT timeSetEvent( UINT uDelay, //以毫秒指定事件的周期
UINT uResolution, //以毫秒指定延時的精度,數值越小定時器事件分辨率越高。缺省值為1ms
LPTIMECALLBACK lpTimeProc, //指向一個回調函數
WORD dwUser, //存放用戶提供的回調數據
UINT fuEvent )// 標志參數,TIME_ONESHOT:執行一次;TIME_PERIODIC:周期性執行
       具體應用時,可以通過調用timeSetEvent()函數,將需要周期性執行的任務定義在 lpFunction回調函數中(如:定時采樣、控制等),從而完成所需處理的事件。需要注意的是:任務處理的時間不能大于周期間隔時間。另外,在定時器使用完畢后,應及時調用timeKillEvent()將之釋放。
原理:可以理解為代回調函數的timeGetTime
精度:毫秒,timeSetEvent可以通過timeBeginPeriod,timeEndPeriod設置定時器的最小解析精度, timeBeginPeriod,timeEndPeriod必須成對出現。
9:高精度時控函數QueryPerformanceFrequency,QueryPerformanceCounter
使用:LARGE_INTEGER m_nFreq;
          LARGE_INTEGER m_nBeginTime;
          LARGE_INTEGER nEndTime;
          QueryPerformanceFrequency(&m_nFreq); //
獲取時鐘周期
          QueryPerformanceCounter(&m_nBeginTime); // 獲取時鐘計數
          Sleep(100);
          QueryPerformanceCounter(&nEndTime);
     cout << (nEndTime.QuadPart-m_nBeginTime.QuadPart)*1000/m_nFreq.QuadPart << endl;
原理:CPU上也有一個計數器,以機器的clock為單位,可以通過rdtsc讀取,而不用中斷,因此其精度與系統時間相當。
精度:計算機獲取硬件支持,精度比較高,可以通過它判斷其他時間函數的精度范圍。
10小結:以上提到常用的9種時間函數,由于他們的用處不同,所以他們的精度也不盡相同,所以如果簡單的延時可以用sleep函數,稍微準確的延時可以使用clock函數,GetTickCount函數,更高級的實用 timeGetTime函數;簡單的定時事件可以用Timer,準確地可以用timeSetEvent;或取一般系統時間可以通time,或者 CTime,或者COleDateTime,獲取準確的時間可以用clock,或者GetTickCount函數,或者timeGetTime函數,而獲取準確地系統時間要使用硬件支持的QueryPerformanceFrequency函數,QueryPerformanceCounter函數。
posted on 2009-02-06 23:32 chatler 閱讀(437) 評論(0)  編輯 收藏 引用 所屬分類: windows
<2010年8月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
2930311234

常用鏈接

留言簿(10)

隨筆分類(307)

隨筆檔案(297)

algorithm

Books_Free_Online

C++

database

Linux

Linux shell

linux socket

misce

  • cloudward
  • 感覺這個博客還是不錯,雖然做的東西和我不大相關,覺得看看還是有好處的

network

OSS

  • Google Android
  • Android is a software stack for mobile devices that includes an operating system, middleware and key applications. This early look at the Android SDK provides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language.
  • os161 file list

overall

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美性感一类影片在线播放| 日韩小视频在线观看| 在线播放豆国产99亚洲| 国产精品免费一区二区三区在线观看 | 久久综合国产精品| 久久久夜精品| 久久亚洲视频| 鲁大师成人一区二区三区| 噜噜噜躁狠狠躁狠狠精品视频 | 亚洲精品免费在线| 亚洲私人影院| 欧美与黑人午夜性猛交久久久| 先锋影音久久| 久久亚洲精选| 亚洲国产欧美一区二区三区丁香婷| 久久综合伊人| 亚洲国产日韩精品| 亚洲天堂av在线免费观看| 欧美一进一出视频| 欧美精品 日韩| 国产欧美精品一区二区三区介绍| 一区二区三区在线观看国产| 亚洲精品一区二区三区在线观看| 一区二区三区免费在线观看| 欧美一区在线直播| 亚洲欧洲日产国产网站| 亚洲欧美一级二级三级| 麻豆精品一区二区综合av| 国产精品成人va在线观看| 国外成人免费视频| 亚洲视频在线看| 女人香蕉久久**毛片精品| 99国产精品自拍| 久久夜色精品国产欧美乱| 欧美无乱码久久久免费午夜一区| 黑人巨大精品欧美一区二区小视频| 日韩亚洲一区二区| 久久久久99精品国产片| 亚洲人成在线观看| 久久精品一区二区国产| 国产精品高清一区二区三区| 亚洲国产经典视频| 性欧美大战久久久久久久久| 亚洲国产精品久久久久久女王| 亚洲一区观看| 欧美日韩另类国产亚洲欧美一级| 一区二区亚洲精品国产| 欧美一区二区高清在线观看| 91久久香蕉国产日韩欧美9色| 久久久久高清| 国产偷久久久精品专区| 亚洲欧美综合国产精品一区| 亚洲精品久久久久| 欧美高清在线| 亚洲三级性片| 夜色激情一区二区| 欧美午夜在线视频| 99亚洲伊人久久精品影院红桃| 久久频这里精品99香蕉| 亚洲影院污污.| 欧美色偷偷大香| 一本大道久久a久久精品综合| 欧美国产亚洲视频| 男女精品视频| 日韩视频在线观看国产| 亚洲激情国产| 欧美精品午夜视频| 99精品视频免费观看视频| 亚洲国产精品一区二区久| 美女视频黄免费的久久| 依依成人综合视频| 久热精品视频在线观看一区| 久久久噜噜噜| 亚洲欧洲日本mm| 亚洲国产精品黑人久久久| 免费在线一区二区| 日韩写真在线| 一区二区三区久久| 国产精品亚洲激情| 久久亚洲图片| 欧美不卡在线视频| 亚洲香蕉在线观看| 羞羞色国产精品| 在线 亚洲欧美在线综合一区| 欧美高清不卡| 欧美四级在线| 久久亚洲精品一区| 欧美女主播在线| 性刺激综合网| 久久亚洲国产精品一区二区 | 9色精品在线| 亚洲一区999| 韩国视频理论视频久久| 亚洲国产成人午夜在线一区| 欧美日韩999| 久久美女艺术照精彩视频福利播放| 久久影院亚洲| 亚洲综合欧美日韩| 狂野欧美一区| 亚洲综合色激情五月| 欧美一区二区三区视频免费播放| 亚洲国产精品一区在线观看不卡| 99热精品在线观看| 在线精品一区| 亚洲一级特黄| 亚洲精品欧美在线| 亚洲女ⅴideoshd黑人| 91久久黄色| 欧美一区二区三区在线看| 一区二区日韩伦理片| 欧美在线免费观看| 亚洲欧美另类在线观看| 欧美成人中文字幕| 久久婷婷国产综合尤物精品| 欧美日韩综合网| 亚洲福利视频网| 在线观看欧美日本| 亚洲一区二区三区精品在线 | 亚洲欧美电影院| 欧美不卡一卡二卡免费版| 久久激情综合网| 欧美午夜精品理论片a级大开眼界| 暖暖成人免费视频| 国产午夜一区二区三区| 亚洲自拍偷拍色片视频| 欧美成人精品激情在线观看| 久久国产一区| 国产精品嫩草影院av蜜臀| 亚洲国产日韩综合一区| 黄色欧美日韩| 欧美一区在线直播| 久久福利资源站| 国产精品视频免费观看| 亚洲视频在线播放| 亚洲一区二区av电影| 欧美日韩www| 亚洲欧洲三级电影| 亚洲精品一区二区三区av| 久久综合国产精品台湾中文娱乐网| 欧美中文字幕久久| 国产精品午夜春色av| 一区二区三区国产在线| 亚洲一区二区三区免费视频| 欧美日韩精品二区| 99精品视频免费观看视频| 一区二区三区四区国产| 国产精品黄色| 亚洲欧美亚洲| 久久久久久久久久久一区| 国产欧美一区二区三区久久人妖 | 久久综合综合久久综合| 伊人蜜桃色噜噜激情综合| 蜜臀va亚洲va欧美va天堂| 亚洲福利一区| 在线亚洲+欧美+日本专区| 欧美三区在线| 亚洲欧美精品一区| 久久一二三四| 亚洲精品国产精品乱码不99 | 国产精品推荐精品| 亚洲男人的天堂在线| 免费成年人欧美视频| 亚洲国产中文字幕在线观看| 欧美福利一区| 国产精品99久久久久久www| 欧美一区二区三区的| 激情文学综合丁香| 欧美区高清在线| 亚洲欧美国产日韩中文字幕 | 亚洲欧美制服另类日韩| 麻豆乱码国产一区二区三区| 一本色道久久| 国内精品国产成人| 欧美美女bbbb| 久久久www免费人成黑人精品| 亚洲三级视频| 久久久久久婷| 亚洲一级一区| 欧美成人激情视频| 久久乐国产精品| 一本色道久久综合亚洲精品不 | 亚洲国产日韩欧美一区二区三区| 欧美三级电影大全| 校园春色国产精品| 日韩视频在线免费观看| 蜜乳av另类精品一区二区| 亚洲欧美国内爽妇网| 亚洲精品日韩在线| 激情国产一区| 国产亚洲一区在线播放| 欧美日韩一区二区在线观看视频 | 久久欧美肥婆一二区| 亚洲图片欧洲图片日韩av| 蜜桃精品久久久久久久免费影院| 亚洲视频在线看| 99re在线精品| 亚洲黄色高清| 久久亚洲视频| 久久久蜜桃一区二区人| 日韩视频一区二区在线观看 |