VC里面有没有计时的函数

helloeveryone2003 2003-09-26 04:43:02
请问各位大侠:

例如:
 我想在一个函数里面调用另一个函数
 并想计算所调用的函数执行了多少时间:
  VC里面有没有这样的函数呢?
或有问时间处理的函数是哪些呢?
...全文
155 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
gaoshengqiang 2003-09-28
  • 打赏
  • 举报
回复
//头文件:
// TimeTick.h: interface for the CTimeTick class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_TIMETICK_H__94CE96CE_FD81_4802_BA80_5FDBC18A4C3B__INCLUDED_)
#define AFX_TIMETICK_H__94CE96CE_FD81_4802_BA80_5FDBC18A4C3B__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

class CTimeTick
{
public:
CString StopString();
double Stop();
void Start();
CTimeTick();
virtual ~CTimeTick();

protected:
LARGE_INTEGER m_OldCount;
double m_Freq;
};

#endif // !defined(AFX_TIMETICK_H__94CE96CE_FD81_4802_BA80_5FDBC18A4C3B__INCLUDED_)


//Cpp文件:
// TimeTick.cpp: implementation of the CTimeTick class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "TimeTick.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CTimeTick::CTimeTick()
{

QueryPerformanceFrequency(&m_OldCount);

// 获得计数器的时钟频率

m_Freq = (double)m_OldCount.QuadPart;


}

CTimeTick::~CTimeTick()
{

}

void CTimeTick::Start()
{
TRACE(_T("Timer running...\n"));
QueryPerformanceCounter(&m_OldCount);
}

double CTimeTick::Stop()
{
LONGLONG QPart1,QPart2;
double dfMinus, dfTim;

// 获得初始值
QPart1 = m_OldCount.QuadPart;
QueryPerformanceCounter(&m_OldCount);

// 获得中止值

QPart2 = m_OldCount.QuadPart;

dfMinus = (double)(QPart2 - QPart1);

// 获得对应的时间值

dfTim = dfMinus * 1000 / m_Freq;

TRACE(_T("Has token %f ms.\n"),dfTim);
return dfTim;
}

CString CTimeTick::StopString()
{
CString str;
str.Format(_T("Has token %f ms.\r\n"),Stop());
return str;
}

使用方法:
CTimeTick TimeTick;
...

TimeTick.Start();
func();//执行要测试的函数
TRACE(TimeTick.StopString);//在调试窗口中输出用过的时间数,以毫秒计
howtotell 2003-09-28
  • 打赏
  • 举报
回复
#include <time.h>

clock_t total;

clock_t start=clock();
//what you want to do.
clock_t end=clock();

CString result;
result.Format("%s%f%s","共耗时",(double)(end-start)/CLK_TCK," 秒");
thundenet 2003-09-28
  • 打赏
  • 举报
回复
DWORD start=GetTickCount();
func();//执行要测试的函数
DWORD result=GetTickCount()-start;//result就是func用的毫秒数
GetTickCount()是计算你的系统已经启动的时间(单位:millisecond)

helloeveryone2003 2003-09-27
  • 打赏
  • 举报
回复
time span is 0
PandaFeng 2003-09-27
  • 打赏
  • 举报
回复
for(DWORD i=0;i<5000000;i++) //看看
helloeveryone2003 2003-09-26
  • 打赏
  • 举报
回复
void CTestDlg::OnButton1()
{
DWORD ms,lms;

char sz[32];


ms=GetTickCount();

OnButton2();
lms=GetTickCount();

lms=lms-ms;

sprintf(sz,"time span is%d",lms);
MessageBox(sz,"time",MB_OK);

}

void CTestDlg::OnButton2()
{ int h=0,n=0;
for(WORD i=0;i<50000;i++)
{h=n+1;
h=n-1;
}
}

为什么结果是:time span is 0 呢
好像没有计里呀
这是为什么呢
bluebohe 2003-09-26
  • 打赏
  • 举报
回复
GetTickCount();
akiko 2003-09-26
  • 打赏
  • 举报
回复
DWORD dw0=GetTickCount();
func();//执行要测试的函数
DWORD dw=GetTickCount()-dw0;//dw就是func用的毫秒数

2,643

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧