正在閱讀:VC++通過匯編獲取代碼運行時間VC++通過匯編獲取代碼運行時間

2004-06-17 12:14 出處:CSDN 作者:hcj2002 責(zé)任編輯:linjixiong

     如何獲得程序或者一段代碼運行的時間?你可能說有專門的程序測試工具,確實,不過你也可以在程序中嵌入?yún)R編代碼來實現(xiàn)。

     在Pentium的指令系統(tǒng)中有一條指令可以獲得CPU內(nèi)部64位計數(shù)器的值,我們可以通過代碼兩次獲取該計數(shù)器的值而獲得程序或代碼運行的時鐘周期數(shù),進而通過你的cpu的頻率算出一個時鐘周期的時間,從而算出程序運行的確切時間。

    我們通過指令TDSIC來獲得cpu內(nèi)部計數(shù)器的值,指令TDSIC返回值放在EDX:EAX中,其中EDX中存放64位寄存器中高32位的值,EAX存放第32位的值.

    下面看看實現(xiàn)的代碼:



//用匯編實現(xiàn)獲取一段代碼運行的時間

#include<iostream>

using namespace std;

void GetClockNumber (long high, long low);
void GetRunTime();
 
int main()
{      
 
 long HighStart,LowStart,HighEnd,LowEnd;
 long numhigh,numlow;
 //獲取代碼運行開始時cpu內(nèi)部計數(shù)器的值
 __asm             
 {
  RDTSC
  mov HighStart, edx
  mov LowStart, eax
 }
 for(int i= 0; i<100000; i++ )
 {
             for(int i= 0; i<100000; i++ )
      {
      
      }
 }


察看評論詳細內(nèi)容 我要發(fā)表評論
作者筆名 簡短內(nèi)容 發(fā)表時間
:

鍵盤也能翻頁,試試“← →”鍵
302 Found

302 Found


Powered by Tengine
tengine