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

posts - 71,  comments - 41,  trackbacks - 0

System Clock級高精度計時器,支持Window/Linux平臺。輸入參數CPU主頻,該值可從注冊表(Windows)或/proc/cpuinfo(Linux)中獲得。
大道至簡——精度高,抖動大

// ?*****************************************************************************
// ??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

下邊給個測試程序,由于我的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;
}

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

FeedBack:
# re: IA32/Windows&Linux高精度計時器
2006-11-28 18:55 | erran
看的不是很明白, 不過
win32下有精確計時的API:
QueryPerformanceFrequency
QueryPerformanceCounter
也是Cpu級的, 用起來很方便.
linux應該也有這樣的系統API..
  回復  更多評論
  
# re: IA32/Windows&Linux高精度計時器
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:)  回復  更多評論
  
# re: IA32/Windows&Linux高精度計時器
2007-12-17 19:15 | input
如果是雙核cpu會對測試結果產生什么影響?  回復  更多評論
  
# re: IA32/Windows&Linux高精度計時器
2008-01-08 11:52 | 小林子
在采用訊馳技術的筆記本芯片上,使用 RTDSC 指令不可信,因為CPU 是變頻的  回復  更多評論
  

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


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

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

常用鏈接

留言簿(4)

隨筆分類(70)

隨筆檔案(71)

charles推薦訪問

搜索

  •  

積分與排名

  • 積分 - 51915
  • 排名 - 448

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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在线观看h| 亚洲激情偷拍| 欧美激情一区二区三区全黄| 麻豆精品传媒视频| 麻豆精品91| 亚洲国产成人久久综合| 亚洲国产欧美日韩| 日韩网站在线| 午夜精品亚洲一区二区三区嫩草| 羞羞漫画18久久大片| 久久久av网站| 欧美色综合网| 在线观看亚洲视频啊啊啊啊| 亚洲精品免费在线| 性视频1819p久久| 另类图片国产| 国产精品99久久久久久宅男| 久久爱www| 欧美日韩国产一中文字不卡 | 欧美成人免费全部观看天天性色| 欧美激情国产日韩| 国产午夜精品视频| 亚洲另类在线一区| 性欧美超级视频| 亚洲国产成人高清精品| 亚洲综合色视频| 欧美激情精品久久久久久变态| 国产精品一区二区欧美| 亚洲区在线播放| 久久激五月天综合精品| 亚洲精品国产品国语在线app| 亚洲永久字幕| 欧美久久99| 亚洲激情精品| 久久成人综合网| 99视频精品免费观看| 久色成人在线| 中国亚洲黄色| 欧美精品 国产精品| 国产日韩综合| 亚洲综合视频一区| 亚洲日本一区二区三区| 久久精品国产99精品国产亚洲性色 | 欧美日本精品在线| 亚洲激情不卡| 麻豆freexxxx性91精品| 欧美亚洲一区三区| 农夫在线精品视频免费观看| 亚洲免费观看| 欧美黑人国产人伦爽爽爽| 国产主播一区二区| 欧美在线观看你懂的| 99pao成人国产永久免费视频| 美女黄网久久| 亚洲高清免费视频| 欧美成人福利视频| 久久激情视频久久| 国产欧美精品在线播放| 亚洲欧美激情诱惑| 中文一区二区| 欧美揉bbbbb揉bbbbb| 亚洲午夜久久久久久久久电影网| 亚洲日本理论电影| 欧美日韩一区二区免费视频| 中日韩视频在线观看| 亚洲美女精品成人在线视频| 欧美日韩精品是欧美日韩精品| 在线性视频日韩欧美| 一本色道久久| 国产亚洲精品aa午夜观看| 久热国产精品视频| 久久免费视频在线| 亚洲激情婷婷| 一区二区三区欧美在线| 国产精品一区二区在线观看| 欧美在线电影| 另类欧美日韩国产在线| 99在线精品免费视频九九视| 一区二区三区你懂的| 国产日韩欧美高清免费| 免费在线日韩av| 欧美精品尤物在线| 午夜精品久久久久久久男人的天堂| 亚洲愉拍自拍另类高清精品| 国产综合色产| 亚洲毛片av在线| 国产综合网站| 亚洲精品一区二区三区婷婷月| 国产精品久久久对白| 蜜臀a∨国产成人精品| 欧美精品自拍| 麻豆91精品91久久久的内涵| 欧美日韩国产综合视频在线观看| 久久国产综合精品| 欧美日本国产视频| 久久影院午夜片一区| 欧美高清在线精品一区| 久久成人18免费网站| 欧美精品在线一区二区三区| 久热国产精品| 国产午夜精品在线| 在线一区二区日韩| 亚洲免费观看在线观看| 久久久夜夜夜| 久久国产一区二区三区| 欧美视频在线一区| 欧美激情片在线观看| 国产一区二区三区丝袜| 亚洲一区久久久| 久久久久久色| 亚洲欧美日韩国产成人精品影院| 极品日韩久久| 91久久精品国产| 欧美视频一区二区三区在线观看| 欧美亚洲自偷自偷| 欧美日韩mp4| 欧美国产欧美亚洲国产日韩mv天天看完整 | 欧美在线啊v一区| 欧美日韩国产黄| 欧美高清日韩| 伊人久久婷婷色综合98网| 亚洲一区二区三区色| 9色porny自拍视频一区二区| 久久久精品日韩| 久久精品视频免费播放| 欧美性做爰猛烈叫床潮| 亚洲美女av在线播放| 99国产精品国产精品毛片| 久久只精品国产| 久久亚洲精品一区| 国产一区二区高清不卡| 亚洲欧美日本国产专区一区| 一区二区三区视频在线观看| 欧美激情片在线观看| 欧美激情一区二区三区在线| 亚洲国产成人精品久久久国产成人一区 | 欧美在线视频在线播放完整版免费观看 | 欧美精品久久天天躁| 亚洲国产精品999| 亚洲人成毛片在线播放| 欧美成人国产| 亚洲肉体裸体xxxx137| 日韩视频在线你懂得| 欧美日韩国产色综合一二三四| 最新中文字幕亚洲| 夜夜夜精品看看| 国产伦精品一区二区三区四区免费| 中文网丁香综合网| 欧美在线视频观看| 精品91久久久久| 欧美成人网在线| 在线亚洲一区二区| 久久免费视频网站| 亚洲国产经典视频| 欧美黄色片免费观看| 99视频国产精品免费观看| 亚洲午夜小视频| 国产精品亚洲第一区在线暖暖韩国| 日韩视频中文字幕| 亚洲欧美日韩精品综合在线观看| 亚洲伊人观看| 国产一区日韩二区欧美三区| 久久精品一区二区| 欧美激情精品久久久六区热门 | 一区二区三区 在线观看视| 亚洲免费在线视频| 狠狠干狠狠久久| 欧美高潮视频| 亚洲欧美日韩直播| 亚洲国产精品福利| 久久aⅴ国产欧美74aaa| 亚洲精品极品| 国产综合18久久久久久| 欧美日本精品一区二区三区| 欧美一区二区视频观看视频| 亚洲黄色影片| 久久精品一区二区| av成人国产| 国内精品福利| 国产精品成人观看视频国产奇米| 欧美在线啊v一区| 日韩一级片网址| 欧美成人午夜视频| 久久精品91久久香蕉加勒比| 9久草视频在线视频精品| 激情久久久久| 国产欧美日韩精品丝袜高跟鞋| 欧美成人a视频| 久久国产乱子精品免费女| 一本高清dvd不卡在线观看| 欧美高清一区二区| 久久最新视频| 久久九九国产精品| 午夜在线a亚洲v天堂网2018| 99成人在线| 亚洲美女在线看| 亚洲国产综合在线看不卡| 国产亚洲精品aa午夜观看| 国产精品久久一级|