设为首页 加入收藏

TOP

C++高精度性能测试函数
2015-07-16 12:55:13 来源: 作者: 【 】 浏览:2
Tags:高精度 性能 测试 函数

在实际software开发工作中,我们经常会测试某个module或者function的执行效率。或者是某个算法的时间复杂度(虽然时间复杂度一定程度上依赖于机器性能,但在同一台computer上,经过算法优化,可以测试其复杂度);这时候就需要精确获取时间,才可以准确的运行时间,下面的函数实现了精确计时,计时精度可以达到微秒级;可用于测试某个模块的效率!


//Purpose :this programme is designed for testing the performance of your code ,some function ect,
//it can show the time of spending on your running on it . it is? beneficial to improve your performance
//of code
// author :Jackery_shh
// data: July 8th? 2015


#include
#include
#include
using namespace std;
#define? IN


#ifdef _DEBUG
#define _Trace_Size 500
inline void FileTrace(IN LPCTSTR szFormat, ...)
{
?if (szFormat == NULL)
? return;


?TCHAR t_trace[_Trace_Size] = { _T('\0') };
?va_list vl = NULL;


?// 生成内容
?va_start(vl, szFormat);
?_vsntprintf_s(t_trace, _Trace_Size, _TRUNCATE, szFormat, vl);
?va_end(vl);
?OutputDebugString(t_trace);
}
#else
inline void FileTrace(IN LPCTSTR szFormat, ...){}
#endif


LARGE_INTEGER begin_time ,freq;


int main()
{
?LARGE_INTEGER begin_time ,freq;
?QueryPerformanceFrequency (&freq);
?QueryPerformanceCounter (&begin_time);
? ? //begin time
? ? for (long test0=0;test0<5000000;test0++)
? ? {
? test0=test0+1;
? ? }
?LARGE_INTEGER end_time0;


? QueryPerformanceCounter (&end_time0);
?//after runnin the 'for' loop statement,the time is Time0
? double Time0 = ((double) (end_time0.QuadPart - begin_time.QuadPart)*1000.0) / (double) (freq.QuadPart);


? ? int test1=10000;
?while (test1)
?{
? test1--;
?}
? LARGE_INTEGER end_time1;
?QueryPerformanceCounter (&end_time1);
? double Time1 = ((double) (end_time1.QuadPart - begin_time.QuadPart)*1000.0) / (double) (freq.QuadPart);
? ? FileTrace(_T("*********************************************************************************\n"));
?FileTrace(_T("Test result is as follow :\ntime: %I64x, %.3fms, %.3fms\n"), (ULONGLONG)0, Time0, Time1);
?FileTrace(_T("*********************************************************************************\n"));
? ? system("pause");
?return 0;
}



C语言梳理一下,分布在以下10个章节中:


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Java从数据库读取信息执行文件拷贝 下一篇如何利用C++在不按Enter键情况下..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: