Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / 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("") };
 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, ...){}
#endifLARGE_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("********************************************************************************* "));
 FileTrace(_T("Test result is as follow : time: %I64x, %.3fms, %.3fms "), (ULONGLONG)0, Time0, Time1);
 FileTrace(_T("********************************************************************************* "));
    system("pause");
 return 0;
}C++ Primer Plus 第6版 中文版 清晰有书签PDF+源代码 http://www.linuxidc.com/Linux/2014-05/101227.htm读C++ Primer 之构造函数陷阱 http://www.linuxidc.com/Linux/2011-08/40176.htm读C++ Primer 之智能指针 http://www.linuxidc.com/Linux/2011-08/40177.htm读C++ Primer 之句柄类 http://www.linuxidc.com/Linux/2011-08/40175.htm将C语言梳理一下,分布在以下10个章节中:
  1. Linux-C成长之路(一):Linux下C编程概要 http://www.linuxidc.com/Linux/2014-05/101242.htm
  2. Linux-C成长之路(二):基本数据类型 http://www.linuxidc.com/Linux/2014-05/101242p2.htm
  3. Linux-C成长之路(三):基本IO函数操作 http://www.linuxidc.com/Linux/2014-05/101242p3.htm
  4. Linux-C成长之路(四):运算符 http://www.linuxidc.com/Linux/2014-05/101242p4.htm
  5. Linux-C成长之路(五):控制流 http://www.linuxidc.com/Linux/2014-05/101242p5.htm
  6. Linux-C成长之路(六):函数要义 http://www.linuxidc.com/Linux/2014-05/101242p6.htm
  7. Linux-C成长之路(七):数组与指针 http://www.linuxidc.com/Linux/2014-05/101242p7.htm
  8. Linux-C成长之路(八):存储类,动态内存 http://www.linuxidc.com/Linux/2014-05/101242p8.htm
  9. Linux-C成长之路(九):复合数据类型 http://www.linuxidc.com/Linux/2014-05/101242p9.htm
  10. Linux-C成长之路(十):其他高级议题
本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-07/119659.htm