平台:操作系统windows98,VC++6.0中文版。
在程序中有下面一段代码,目的是测试复杂操作P花费的时间。伪代码如下:SYSTEMTIME STime;
GetLocalTime(&STime);
int nStart = STime.wMinute*60*1000 + STime.wSecond*1000 + STime.wMilliseconds;复杂操作P;SYSTEMTIME ETime;
GetLocalTime(&ETime);
int nEnd = ETime.wMinute*60*1000 + ETime.wSecond*1000 + ETime.wMilliseconds;
int nInterval = nEnd - nStart;nInterval就是复杂操作P花费的毫秒,但是测得的数据有时候是0!有时候是50ms左右,且0出现的频率是50ms出现频率的两三倍。复杂操作P是做图像采集和压缩的,应该耗时不少,不应是0的。
请问为什么会出现0?是GetLocalTime函数和98操作系统的原因吗?请高手指教!!!
在程序中有下面一段代码,目的是测试复杂操作P花费的时间。伪代码如下:SYSTEMTIME STime;
GetLocalTime(&STime);
int nStart = STime.wMinute*60*1000 + STime.wSecond*1000 + STime.wMilliseconds;复杂操作P;SYSTEMTIME ETime;
GetLocalTime(&ETime);
int nEnd = ETime.wMinute*60*1000 + ETime.wSecond*1000 + ETime.wMilliseconds;
int nInterval = nEnd - nStart;nInterval就是复杂操作P花费的毫秒,但是测得的数据有时候是0!有时候是50ms左右,且0出现的频率是50ms出现频率的两三倍。复杂操作P是做图像采集和压缩的,应该耗时不少,不应是0的。
请问为什么会出现0?是GetLocalTime函数和98操作系统的原因吗?请高手指教!!!
解决方案 »
- PNG透明按钮的问题
- 急:VC中double aa=0.0000 double bb=0.0000 double cc=aa/bb 为什么不等于0 会等于-1.#IND000000000 怎么解决
- ■■■各位大虾救命,怎样从父窗口传递CListCtrl到弹出窗口的问题!!!
- 如何把一个MFC生成的ActiveX作成一个包含按钮,编辑框的对话框,嵌在网页中?(在线等候结帖)
- 大家有没有缓解眼睛疲劳的方法,我的眼睛都花了
- 如何能学好C/C++呢,高手推荐好书和好的方法
- vc++中mscomm控件中的setting属性的“bbbb,p,d,s”可以用变量吗?
- 如何实现PHOTOSHOP中每个图形元素作为一个对象
- 用VC的ATL做COM组件时,如何才能让函数有自己的返回值?
- 学习什么样的语言?
- 短信发送问题
- 2个很菜的问题
DWORD stTime, curTime;
stTime = GetTickCount();复杂操作P;curTime = GetTickCount();int nInterval = curTime - stTime; //(毫秒);
t=timeGettime()-t;//结束时,t为时间
{
public:
CHiResTimer();
virtual ~CHiResTimer() {} bool IsTimerInstalled(void) const {return m_bTimerInstalled;} void Start(void);
void Stop(void);
float GetTime(void) const;
void Reset(void);protected:
bool m_bTimerInstalled;
QWORD m_qwStart, m_qwStop, m_qwFreq;
};//***********************************************
CHiResTimer::CHiResTimer() : m_qwStart(0), m_qwStop(0)
{
m_bTimerInstalled = QueryPerformanceFrequency((LARGE_INTEGER*)&m_qwFreq) ? true : false;
}//***********************************************
void CHiResTimer::Start(void)
{
QueryPerformanceCounter((LARGE_INTEGER*)&m_qwStart);
}//***********************************************
void CHiResTimer::Stop(void)
{
QueryPerformanceCounter((LARGE_INTEGER*)&m_qwStop);
}//***********************************************
float CHiResTimer::GetTime(void) const
{
float fTime = 0.0;
if(m_bTimerInstalled && m_qwFreq != 0)
fTime = (float)((m_qwStop - m_qwStart) / (float)m_qwFreq); return fTime;
}//***********************************************
void CHiResTimer::Reset(void)
{
m_qwStart = m_qwStop = 0;
}