程序运行时间的测定
请问如何测定程序中某部分(如除去输入\输出的部分)的精确运行时间?
在C++中有什么好办法吗?
问题点数:20、回复次数:5Top
1 楼colacoca(我是一瓶倒过来的可口可乐)回复于 2002-04-17 10:00:31 得分 5
运行前取系统时间
程序运行
再取一次系统时间
相减Top
2 楼radioheads(难忘沙宣的芳香)回复于 2002-04-17 10:02:57 得分 0
能达到什么样的精确程度呢??Top
3 楼IT_worker(IT工人)回复于 2002-04-17 11:13:10 得分 10
//精确到20毫秒
class CUseTime
{
DWORD m_begin;
CUseTime(){
m_begin = GetTickCount();
}
~CUseTime(){
DWORD current = GetTickCount();
CString str;
str.Format("%lf秒", (current-m_begin)*0.001);
AfxMessageBox( str );
}
};
void my_fun()
{
CUseTime test;
//……
}Top
4 楼yaos(雪夜西风小柴屋·娇妻爱子红暖炉)回复于 2002-04-17 11:32:10 得分 2
用CPUID指令Top
5 楼starfish(海星)回复于 2002-04-17 13:59:12 得分 3
如果你使用windowsNT操作系统
可以在程序中用API函数CreateProcess创建线程来执行程序的主体部分
然后在线程结束后调用API函数GetProcessTimes就可以得到该线程运行所花费的具体的CPU时间。
这两个API的具体用法和参数,你可以查阅MSDN
Top




