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

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

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

常用鏈接

留言簿(10)

隨筆分類(307)

隨筆檔案(297)

algorithm

Books_Free_Online

C++

database

Linux

Linux shell

linux socket

misce

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

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>
            欧美激情aⅴ一区二区三区 | 在线精品国精品国产尤物884a| 亚洲一级黄色av| 欧美专区在线| 亚洲电影中文字幕| 欧美日韩三级电影在线| 亚洲尤物视频网| 久久这里有精品15一区二区三区| 亚洲欧洲精品一区二区三区不卡 | 久久九九久精品国产免费直播| 免费观看成人鲁鲁鲁鲁鲁视频| 亚洲美女精品成人在线视频| 欧美三区在线观看| 久久精品动漫| 日韩亚洲视频在线| 久久久精品国产免费观看同学| 亚洲国产va精品久久久不卡综合| 欧美久久久久久久久| 午夜精品福利视频| 亚洲福利在线观看| 午夜国产精品视频免费体验区| 国产在线拍偷自揄拍精品| 欧美韩国日本一区| 欧美诱惑福利视频| aa日韩免费精品视频一| 裸体女人亚洲精品一区| 亚洲一区二区在线| 亚洲国内精品| 国产亚洲精品bv在线观看| 欧美黄色免费| 久久久久久久久久久久久久一区| 99re热这里只有精品视频| 毛片一区二区三区| 午夜精彩国产免费不卡不顿大片| 亚洲激情综合| 狠久久av成人天堂| 国产精品嫩草影院av蜜臀| 欧美激情亚洲精品| 久久免费99精品久久久久久| 亚洲无人区一区| 亚洲美女免费精品视频在线观看| 美女国产一区| 久久激情视频免费观看| 亚洲小视频在线| 99re66热这里只有精品3直播| 一区二区三区中文在线观看| 国产精品久久二区| 欧美日韩在线一区二区三区| 麻豆视频一区二区| 久久久久久久网站| 欧美一区日本一区韩国一区| 亚洲天堂第二页| 亚洲美女诱惑| 日韩视频在线一区二区| 亚洲高清在线视频| 亚洲电影免费在线| 欧美成人一区二区三区片免费| 久久国内精品自在自线400部| 午夜日韩在线| 羞羞答答国产精品www一本| 中日韩美女免费视频网站在线观看| 亚洲激情在线| 亚洲精品美女| 亚洲乱码日产精品bd| 亚洲精品视频一区二区三区| 亚洲激情不卡| 亚洲精品之草原avav久久| 亚洲精品国产精品国自产观看| 亚洲国产精品第一区二区三区| 伊人婷婷久久| 在线欧美日韩| 亚洲国产欧美在线| 亚洲乱码久久| 亚洲一区免费看| 性刺激综合网| 久久久久一区二区三区| 久久亚洲私人国产精品va| 久久永久免费| 亚洲电影免费观看高清| 亚洲国产综合在线| 日韩一级欧洲| 翔田千里一区二区| 久久亚洲风情| 欧美精品久久久久久久久老牛影院| 欧美精品在线视频观看| 国产精品啊v在线| 国产日韩精品在线播放| 精品69视频一区二区三区| 亚洲国产专区校园欧美| 一区二区精品国产| 欧美亚洲一区二区在线观看| 久久久7777| 亚洲国产高清高潮精品美女| 亚洲精品国产精品国产自| 亚洲视频在线一区| 久久精品午夜| 欧美区二区三区| 国产精品亚洲一区| 在线日韩中文| 亚洲永久免费| 麻豆精品在线视频| 亚洲美女免费精品视频在线观看| 亚洲一区二区三区四区中文| 久久精品中文字幕一区| 欧美日韩国产丝袜另类| 国产日韩av高清| 亚洲久久视频| 欧美一级在线视频| 欧美激情视频一区二区三区在线播放 | 一本色道久久综合亚洲精品不卡| 午夜精品福利视频| 欧美福利小视频| 亚洲一区欧美| 欧美激情一区二区三区成人| 国产欧美短视频| 亚洲精选国产| 久久亚洲精品中文字幕冲田杏梨| 亚洲国产精品一区二区久| 午夜久久一区| 欧美日韩国产综合视频在线观看 | 欧美日韩123| 在线观看日韩一区| 午夜精品久久| 亚洲精品国产拍免费91在线| 久久av一区| 国产精品家教| 99国内精品久久久久久久软件| 久久精品视频在线免费观看| 亚洲精品一区二区三区蜜桃久| 欧美自拍丝袜亚洲| 国产精品手机在线| 一区二区三区精品视频在线观看| 久久久一区二区| 亚洲欧美日韩综合国产aⅴ| 欧美日韩成人一区| 亚洲欧洲另类国产综合| 开心色5月久久精品| 午夜精品国产| 国产精品三区www17con| 亚洲视频在线观看视频| 91久久精品日日躁夜夜躁国产| 久久欧美中文字幕| 国内外成人免费激情在线视频| 午夜在线观看欧美| 国产精品99久久久久久久女警 | 亚洲一区二区三区777| 欧美激情精品久久久久久变态| 一区二区三区无毛| 久久婷婷国产麻豆91天堂| 亚洲免费影视第一页| 国产精品久久久| 亚洲男人的天堂在线aⅴ视频| 99亚洲视频| 欧美四级在线| 午夜精品成人在线视频| 国产精品99久久久久久有的能看| 欧美色综合网| 亚洲一区自拍| 亚洲伊人网站| 国产乱码精品一区二区三区五月婷| 亚洲综合色婷婷| 亚洲午夜一级| 国产亚洲一区在线播放| 久久av二区| 久久久久久久尹人综合网亚洲| 激情久久久久久久| 欧美顶级艳妇交换群宴| 欧美 日韩 国产 一区| 亚洲欧洲在线视频| 亚洲精品一区二区三区福利| 欧美日韩久久精品| 亚洲综合色噜噜狠狠| 亚洲欧美日韩一区二区三区在线观看 | 欧美风情在线观看| 欧美激情黄色片| 亚洲视频在线看| 亚洲男女自偷自拍图片另类| 国产欧美一区二区三区视频 | 欧美成人精品激情在线观看| 亚洲欧洲一区| 一本久久综合| 国产亚洲aⅴaaaaaa毛片| 久久亚洲一区二区| 欧美激情亚洲| 欧美亚洲视频一区二区| 久久国产精品一区二区三区| 亚洲国产99| 一本一本大道香蕉久在线精品| 国产精品日韩| 你懂的成人av| 欧美日韩亚洲综合在线| 欧美淫片网站| 欧美第十八页| 欧美一级专区免费大片| 久久伊人亚洲| 亚洲一区二区三区成人在线视频精品| 亚洲欧美激情四射在线日 | 亚洲日产国产精品| 亚洲一区黄色| 亚洲国产高清一区|