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

posts - 71,  comments - 41,  trackbacks - 0

System Clock級(jí)高精度計(jì)時(shí)器,支持Window/Linux平臺(tái)。輸入?yún)?shù)CPU主頻,該值可從注冊(cè)表(Windows)或/proc/cpuinfo(Linux)中獲得。
大道至簡——精度高,抖動(dòng)大

// ?*****************************************************************************
// ??IA32Timer???version:??1.0????date:?04/26/2006
// ??----------------------------------------------------------------------------
// ??This?class?is?a?wrapper?of?IA32?RDTSC?
// ??(ReaD?Time?Stamp?Counter)?instruction.
// ??It?will?help?you?get?the?interval?time?with
// ??different?level.
// ??----------------------------------------------------------------------------
// ??Copyright?(C)?2006?-?Charles?Zu
// ?*****************************************************************************
// ?????Note:?All?the?classes?the?author?designed?are?leading?with?"Z"
// ??which?is?contradistinguished?form?the?leading?with?"C"?of?MFC
// ?*****************************************************************************

class ?ZIA32Timer
{
public :
????ZIA32Timer(
double ?ghz)
????:m_startcycle(
0 ),?m_ghz(ghz)
????
{
#ifndef?_WIN32
????????m_high?
= ? 0 ;
????????m_low?
= ? 0 ;
#endif
????}


????
void ?Start()
????
{
#ifdef?_WIN32
????????m_startcycle?
= ?RTSC();
#else
????????RTSC();
????????m_startcycle?
= ?(unsigned? long ? long )?m_high? * ?( 1 ? << ? 30 )? * ? 4 ? + ?m_low;
#endif
????}


#ifdef?_WIN32
????unsigned?__int64?Stop(
int ?unit);
#else
????unsigned?
long ? long ?Stop( int ?unit);
#endif

????
static ? enum ?Unit {CYCLE,?NS,?US,?MS,?S} s_unit;

private :
#ifdef?_WIN32
????unsigned?__int64??m_startcycle;
#else
????unsigned?
long ? long ?m_startcycle;
????unsigned?
int ?m_high;
????unsigned?
int ?m_low;
#endif

#ifdef?_WIN32
????unsigned?__int64?RTSC();
#else
???
void ?RTSC();
#endif

double ?m_ghz;

}
;

#ifdef?_WIN32
????inline?unsigned?__int64?ZIA32Timer::RTSC()
????
{
????????_asm????_emit?
0x0F
????????_asm????_emit?
0x31
????}

#else
????inline?
void ?ZIA32Timer::RTSC()
????
{
????????asm(
" rdtsc;?movl?%%edx,%0;?movl?%%eax,%1 " ??? // ?Read?cycle?counter
????????????:? " =r " ?(m_high),? " =r " ?(m_low)????????????????????????????????????
????????????:?
/* ?No?input? */ ?????????????????????????????
????????????:?
" %edx " ,? " %eax " );
????}

#endif

#ifdef?_WIN32
????inline?unsigned?__int64?ZIA32Timer::Stop(
int ?unit)
????
{
????????
switch (unit)
????????
{
????????
case ?CYCLE:
????????????
return ?(unsigned?__int64)(RTSC()? - ?m_startcycle);
????????
break ;

????????
case ?NS:
????????????
return ?(unsigned?__int64)((RTSC()? - ?m_startcycle)? / ?m_ghz);
????????
break ;

????????
case ?US:
????????????
return ?(unsigned?__int64)((RTSC()? - ?m_startcycle)? / ?m_ghz? / ? 1000 );
????????
break ;

????????
case ?MS:
????????????
return ?(unsigned?__int64)((RTSC()? - ?m_startcycle)? / ?m_ghz? / ? 1000000 );
????????
break ;

????????
case ?S:
????????????
return ?(unsigned?__int64)((RTSC()? - ?m_startcycle)? / ?m_ghz? / ? 1000000000 );
????????
break ;

????????
default :
????????????
break ;
????????}

????????
return ? 0 ;
????}

#else
????inline?unsigned?
long ? long ?ZIA32Timer::Stop( int ?unit)
????
{
????????unsigned?
long ? long ?stoppiont;
????????RTSC();
????????stoppiont?
= ?(((unsigned? long ? long )m_high)? << ? 32 )? + ?m_low;
????????
????????
switch (unit)
????????
{
????????
case ?CYCLE:
????????????
return ?(unsigned? long ? long )(stoppiont? - ?m_startcycle);
????????????
break ;

????????
case ?NS:
????????????
return ?(unsigned? long ? long )((stoppiont? - ?m_startcycle)? / ?m_ghz);
????????????
break ;

????????
case ?US:
????????????
return ?(unsigned? long ? long )((stoppiont? - ?m_startcycle)? / ?m_ghz? / ? 1000 );
????????????
break ;

????????
case ?MS:
????????????
return ?(unsigned? long ? long )((stoppiont? - ?m_startcycle)? / ?m_ghz? / ? 1000000 );
????????????
break ;

????????
case ?S:
????????????
return ?(unsigned? long ? long )((stoppiont? - ?m_startcycle)? / ?m_ghz? / ? 1000000000 );
????????????
break ;

????????
default :
????????????
break ;
????????}

????????
return ? 0 ;
????}

#endif

下邊給個(gè)測(cè)試程序,由于我的CPU主頻為3GHZ,所以寫了hard code
#include?<stdio.h>
#ifdef?_WIN32
#include?
<windows.h>
#else
#include?
<unistd.h>
#endif

#include?
"IA32Timer.h"

void?MySleep()
{
#ifdef?_WIN32
//?????Sleep(1);
?????Sleep(10);
//?????Sleep(100);
//?????Sleep(1000);
#else
????usleep(
100?*?1000);
#endif
}


int?main(int?argc,?char**?argv)
{
????ZIA32Timer?ztimer(
3);?//the?arg?is?the?GHZ?of?your?CPU

#ifdef?_WIN32
unsigned?__int64?interval;
#else
unsigned?
long?long?interval;
#endif

????ztimer.Start();
????MySleep();
????interval?
=?ztimer.Stop(ZIA32Timer::CYCLE);
????fprintf(stdout,?
"interval?=?%u?(cycle)\n",?interval);

????ztimer.Start();
????MySleep();
????interval?
=?ztimer.Stop(ZIA32Timer::NS);
????fprintf(stdout,?
"interval?=?%u?(ns)\n",?interval);

????ztimer.Start();
????MySleep();
????interval?
=?ztimer.Stop(ZIA32Timer::US);
????fprintf(stdout,?
"interval?=?%u?(us)\n",?interval);

????ztimer.Start();
????MySleep();
????interval?
=?ztimer.Stop(ZIA32Timer::MS);
????fprintf(stdout,?
"interval?=?%u?(ms)\n",?interval);

????ztimer.Start();
????MySleep();
????interval?
=?ztimer.Stop(ZIA32Timer::S);
????fprintf(stdout,?
"interval?=?%u?(s)\n",?interval);

????
return?0;
}

參考了高人的匯編實(shí)現(xiàn),自己整理,貼出來,希望對(duì)你有啟示
posted on 2006-11-28 14:49 Charles 閱讀(1779) 評(píng)論(4)  編輯 收藏 引用 所屬分類: Helper Utility

FeedBack:
# re: IA32/Windows&Linux高精度計(jì)時(shí)器
2006-11-28 18:55 | erran
看的不是很明白, 不過
win32下有精確計(jì)時(shí)的API:
QueryPerformanceFrequency
QueryPerformanceCounter
也是Cpu級(jí)的, 用起來很方便.
linux應(yīng)該也有這樣的系統(tǒng)API..
  回復(fù)  更多評(píng)論
  
# re: IA32/Windows&Linux高精度計(jì)時(shí)器
2006-11-28 19:48 | Charles
IA32's RDTSC(ReaD Time Stamp Counter) instruction returns the number of clock cycles passed since the booting of the CPU in 64-bit unsigned integer, through the EDX and EAX 32-bit general register pair. So it is more precision than any other method:)  回復(fù)  更多評(píng)論
  
# re: IA32/Windows&Linux高精度計(jì)時(shí)器
2007-12-17 19:15 | input
如果是雙核cpu會(huì)對(duì)測(cè)試結(jié)果產(chǎn)生什么影響?  回復(fù)  更多評(píng)論
  
# re: IA32/Windows&Linux高精度計(jì)時(shí)器
2008-01-08 11:52 | 小林子
在采用訊馳技術(shù)的筆記本芯片上,使用 RTDSC 指令不可信,因?yàn)镃PU 是變頻的  回復(fù)  更多評(píng)論
  

只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


<2006年11月>
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

決定開始寫工作日記,記錄一下自己的軌跡...

常用鏈接

留言簿(4)

隨筆分類(70)

隨筆檔案(71)

charles推薦訪問

搜索

  •  

積分與排名

  • 積分 - 52230
  • 排名 - 447

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美在线日韩精品| 亚洲九九九在线观看| 亚洲亚洲精品三区日韩精品在线视频| 国产精品乱码久久久久久| 欧美freesex8一10精品| 性色av一区二区三区在线观看| 亚洲国产精品福利| 久久国产88| 亚洲欧美日韩国产综合在线| 亚洲国产mv| 一区精品久久| 国产一区二区成人久久免费影院| 欧美日本精品在线| 乱中年女人伦av一区二区| 久久成人免费网| 午夜伦欧美伦电影理论片| 一区二区三区精品国产| 亚洲乱码国产乱码精品精可以看| 欧美国产免费| 鲁大师成人一区二区三区| 欧美伊人精品成人久久综合97| 一区二区三区国产在线观看| 最新日韩av| 亚洲激情第一区| 在线电影国产精品| 黄色日韩网站| 在线高清一区| 亚洲电影第三页| 亚洲国产精品成人综合| 亚洲高清影视| 99国产精品久久久久久久| 亚洲精品三级| 夜夜嗨av一区二区三区中文字幕| 亚洲国产日韩欧美在线动漫| 亚洲电影天堂av| 亚洲人成网站999久久久综合| 欧美激情一区二区三区四区| 亚洲电影免费观看高清完整版在线观看 | 亚洲精品国产品国语在线app| 一区二区在线看| 激情综合亚洲| 91久久精品国产91久久性色| 亚洲国产综合视频在线观看| 91久久久亚洲精品| 亚洲精品久久久蜜桃| 亚洲精品中文字幕女同| 日韩视频一区二区三区| 一区二区三区黄色| 翔田千里一区二区| 久久久国产视频91| 欧美va天堂在线| 亚洲黄色在线观看| 亚洲卡通欧美制服中文| 亚洲午夜精品一区二区| 久久成人免费电影| 欧美高清不卡在线| 欧美新色视频| 韩国成人理伦片免费播放| 亚洲国产精品免费| 亚洲视频日本| 久久三级福利| 亚洲国产精选| 亚洲人成亚洲人成在线观看图片| 夜夜夜精品看看| 亚久久调教视频| 欧美国产免费| 亚洲视频免费看| 久久久夜色精品亚洲| 欧美日韩综合网| 国产在线观看精品一区二区三区| 亚洲国产你懂的| 亚洲一区三区视频在线观看 | 国产精品入口日韩视频大尺度| 国产日本欧美在线观看| 在线看国产一区| 亚洲午夜电影在线观看| 久久久青草婷婷精品综合日韩| 亚洲福利国产精品| 亚洲欧美春色| 欧美激情精品久久久久久免费印度 | 一区二区三区国产盗摄| 欧美专区福利在线| 欧美日韩理论| 一区国产精品| 欧美一区二区三区免费看| 亚洲成人中文| 亚洲午夜国产成人av电影男同| 久久久久五月天| 99re6这里只有精品视频在线观看| 午夜在线a亚洲v天堂网2018| 欧美—级a级欧美特级ar全黄| 国产一区日韩一区| 亚洲午夜日本在线观看| 欧美成人午夜影院| 亚洲免费在线观看| 欧美日韩亚洲一区在线观看| 在线观看日韩国产| 久久av二区| 一本大道久久a久久综合婷婷 | 欧美一区二区三区久久精品| 欧美理论电影在线播放| 一区二区视频欧美| 欧美一级黄色录像| 99在线精品视频| 另类亚洲自拍| 伊人成人开心激情综合网| 午夜精品一区二区在线观看| 亚洲欧洲一区二区天堂久久| 久久久久国色av免费观看性色| 国产精品网曝门| 亚洲图片激情小说| 亚洲精品中文在线| 欧美激情第二页| 91久久国产自产拍夜夜嗨| 久久蜜桃精品| 欧美一区二区日韩| 国产视频一区二区三区在线观看| 亚洲一区自拍| 在线一区二区视频| 欧美午夜在线观看| 亚洲视频在线观看免费| 亚洲乱码视频| 欧美日韩在线免费| 亚洲一级一区| 这里是久久伊人| 国产精品久久久久久影视| 亚洲欧美日韩国产一区二区| 99视频国产精品免费观看| 欧美日本国产视频| 99这里只有精品| 9人人澡人人爽人人精品| 欧美久久精品午夜青青大伊人| 日韩视频中文| 亚洲理论在线观看| 欧美日韩日日骚| 亚洲欧美日韩国产一区| 亚洲男人的天堂在线aⅴ视频| 国产精品久久久久久久午夜| 亚洲欧美日韩国产一区二区| 亚洲女人天堂av| 国产字幕视频一区二区| 猛干欧美女孩| 欧美精品一区二| 亚洲永久免费观看| 亚洲欧美日韩在线| 狠狠久久综合婷婷不卡| 欧美成人午夜激情在线| 欧美精品三级| 午夜精品福利电影| 亚洲专区欧美专区| 国产日韩av在线播放| 久久这里只有| 欧美激情一区在线观看| 亚洲欧美怡红院| 久久九九热re6这里有精品| 亚洲成人在线视频网站| 日韩视频一区| 国产亚洲欧美日韩在线一区| 暖暖成人免费视频| 欧美日韩视频在线| 久久精品免费观看| 欧美激情综合五月色丁香| 亚洲欧美国产高清va在线播| 欧美在线观看视频在线| 最近中文字幕日韩精品| 一区二区三区.www| 黄色成人在线观看| 亚洲精选视频免费看| 国产日韩欧美二区| 亚洲国产精品毛片| 国产模特精品视频久久久久| 欧美成人国产va精品日本一级| 欧美日韩精品二区第二页| 久久精品国语| 欧美精品91| 久久人人爽爽爽人久久久| 欧美日本中文字幕| 久久久久高清| 欧美天堂亚洲电影院在线播放| 久久婷婷综合激情| 欧美视频国产精品| 欧美成年人视频网站| 国产精品试看| 91久久久在线| 在线成人av| 亚洲午夜91| 夜夜精品视频| 久久美女艺术照精彩视频福利播放| 中文一区在线| 麻豆免费精品视频| 久久精品官网| 欧美午夜精品久久久久久人妖 | 久久久亚洲一区| 欧美日韩精品一区二区三区四区| 久久综合色88| 国产日韩欧美麻豆| 亚洲深夜av| 亚洲最新视频在线| 美女被久久久| 久久琪琪电影院|