dfFreq=(double)litmp.QuadPart; while(true)
{ QueryPerformanceCounter(&litmp);
QPart1 = litmp.QuadPart;
N1=QPart1; QueryPerformanceCounter(&litmp);
QPart2 = litmp.QuadPart; while(((double)(QPart2-QPart1))<0.8*0.001*dfFreq)//根据(QPart2-QPart1)/f=t的公式=>(QPart2-QPart1)=f*t {
QPart1=QPart2;
QueryPerformanceCounter(&litmp);
QPart2 = litmp.QuadPart;
N2=QPart2;
}
break;
} dfMinus=(double)(N2-N1);
dfTim = (dfMinus / dfFreq)*1000000;
_itoa(dfTim,buffer,10);//convert integer to string
AfxMessageBox(buffer,IDCANCEL,0);我根据(QPart2-QPart1)/f=t的公式=>(QPart2-QPart1)=f*t
现在我取t=0.8ms
这个公式我最后的dfTim应该和0.8ms没什么很大的差距。
但我得到的结果总和0.8ms相差不多10倍,为什么 请高手指点。。
(急。)
{ QueryPerformanceCounter(&litmp);
QPart1 = litmp.QuadPart;
N1=QPart1; QueryPerformanceCounter(&litmp);
QPart2 = litmp.QuadPart; while(((double)(QPart2-QPart1))<0.8*0.001*dfFreq)//根据(QPart2-QPart1)/f=t的公式=>(QPart2-QPart1)=f*t {
QPart1=QPart2;
QueryPerformanceCounter(&litmp);
QPart2 = litmp.QuadPart;
N2=QPart2;
}
break;
} dfMinus=(double)(N2-N1);
dfTim = (dfMinus / dfFreq)*1000000;
_itoa(dfTim,buffer,10);//convert integer to string
AfxMessageBox(buffer,IDCANCEL,0);我根据(QPart2-QPart1)/f=t的公式=>(QPart2-QPart1)=f*t
现在我取t=0.8ms
这个公式我最后的dfTim应该和0.8ms没什么很大的差距。
但我得到的结果总和0.8ms相差不多10倍,为什么 请高手指点。。
(急。)
#include "windows.h"
int main(int argc, char* argv[])
{
LARGE_INTEGER countstart;
LARGE_INTEGER countend;
__int64 timediff;
LARGE_INTEGER frequent;
QueryPerformanceCounter( &countstart);
printf("Hello World!\n");
printf("Hello World!\n");
printf("Hello World!\n");
QueryPerformanceCounter( &countend);
timediff = (__int64)countend.QuadPart-(__int64)countstart.QuadPart;
QueryPerformanceFrequency(&frequent);
double dsec = (double)timediff/(double)frequent.QuadPart;
printf("elapsed time :%f(second)\n",dsec);
return 0;
}
你可以提高进程和线程的优先级试试。
就是不知道怎么通过循环达到我要的0.8ms(毫秒),因为通过公式计算的误差太大。只能自己写一定的参数进去。
但写的参数换到别的机器上肯定要变,事实上系统发出去,就根本没有办法知道该用什么参数,所以我很苦恼请高手救命