C++高精度性能测试函数

在实际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<Windows.h>
#include<iostream>
#include<tchar.h>
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++ Primer Plus 第6版 中文版 清晰有书签PDF+源代码

读C++ Primer 之构造函数陷阱

读C++ Primer 之智能指针

读C++ Primer 之句柄类

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

Linux-C成长之路(一):Linux下C编程概要

Linux-C成长之路(二):基本数据类型

Linux-C成长之路(三):基本IO函数操作

Linux-C成长之路(四):运算符

Linux-C成长之路(五):控制流

Linux-C成长之路(六):函数要义

Linux-C成长之路(七):数组与指针

Linux-C成长之路(八):存储类,动态内存

Linux-C成长之路(九):复合数据类型

Linux-C成长之路(十):其他高级议题

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/b9076833a243ba18e4c445ca9c0e1b53.html