在实际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;
}

test result is :

C++高精度性能測试函数的更多相关文章

  1. 系统吞吐量、TPS(QPS)、用户并发量、性能測试概念和公式

    PS:以下是性能測试的主要概念和计算公式,记录下: 一.系统吞度量要素: 一个系统的吞度量(承压能力)与request对CPU的消耗.外部接口.IO等等紧密关联.单个reqeust 对CPU消耗越高, ...

  2. Linux 性能測试工具

    Linux 性能測试工具 linux performance 查看系统配置 查看CPU信息 lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64- ...

  3. PHP归档phar性能測试

    PHP自从5.3后新增PHAR归档,Phar 归档的概念来自 Java™ 技术的 JAR 归档,它同意使用单个文件打包应用程序.这个文件里包括运行应用程序所需的全部东西.该文件不同于单个可运行文件,后 ...

  4. Redis源代码分析(十三)--- redis-benchmark性能測试

    今天讲的这个是用来给redis数据库做性能測试的,说到性能測试,感觉这必定是高大上的操作了.redis性能測试.測的究竟是哪方面的性能,怎样測试,通过什么指标反映此次測试的性能好坏呢.以下我通过源代码 ...

  5. Android性能測试 一些适用于Android Studio的代码审查和性能測试工具

    导言: Android应用在CPU占用,内存消耗方面的性能指标是影响产品质量的重要因素,因为QQ管家,360手机助手等应用都提供直观的内存消耗,流量监控功能,致使用户比以往更加关注软件的性能,并以此进 ...

  6. C++调用Lua的性能測试

    游戏服务器经典的架构就是C++和Lua的结合,C++开发主体框架.Lua实现一些复杂的逻辑.我们都知道Lua是一种很快的语言.可是究竟有多块.我们測试下看看. C++调用Lua的性能測试.发现不正确的 ...

  7. JNI/NDK开发指南(九)——JNI调用性能測试及优化

    转载请注明出处:http://blog.csdn.net/xyang81/article/details/44279725 在前面几章我们学习到了.在Java中声明一个native方法,然后生成本地接 ...

  8. mongodb3.0 性能測试报告 一

    mongodb3.0 性能測试报告 一 mongodb3.0 性能測试报告 二 mongodb3.0 性能測试报告 三 測试环境: 服务器:X86 pcserver   共6台 cpu:  单颗8核 ...

  9. Window平台搭建Redis分布式缓存集群 (一)server搭建及性能測试

    百度定义:Redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对很多其它.包含string(字符串).list(链表).set(集合).zset(sort ...

随机推荐

  1. Web程序安全机制

    ASP.NET提供了一个多层的安全模型,这个模型能够非常容易的保护Web应用程序. 安全策略没有必要非常复杂,但是需要应用安全策略的地方却是非常广泛的.程序员需要保证自己的应用程序不能被骗取,而把私有 ...

  2. Cookie localStorage sessionStorage

    三者的异同 特性 Cookie localStorage sessionStorage 数据的生命期 可设置失效时间,默认是关闭浏览器后失效 除非被清除,否则永久保存 仅在当前会话下(tab标签页)有 ...

  3. 在已有spring的基础上集成hibernate

    1.导入hibernate的包和spring的包    hibernate3.hibernate-jpa-2.0-api-.必须的包,log4j,log4j配置文件  1.1 导入Spring的依赖包 ...

  4. cms中某些标题链接的单独写法

    href="{$CATEGORYS[45][url]}" 链接写法, {$CATEGORYS[45][catname]} 标题写法 在show页面中 src="{$thu ...

  5. [Windows Server 2012] 安装SQL Server 2012

    ★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频.★ 本节我们将带领大家:安装SQL S ...

  6. RadioButtonList的兩種實現方式

    一種是修改ItemTemplate,即ListBoxItem裏面的内容 <ListBox ItemsSource="{Binding}"> <ListBox.It ...

  7. 关于Qt 报QDomDocument: No such file or directory错误解决办法

    肯定是没有找到相关的路径,这时候只需要在.pro文件中加入便好了,比如我要用到读写xml的一些头文件,则需要在.pro中加入如下代码: 就可以正常引用了.

  8. 使用GetMirror一次镜像多个实体

    public static void GetMirror(this ObjectIdCollection ids, Point3d p1, Point3d p2, bool s, params Ent ...

  9. 一个好玩的 屏蔽别人审查元素F12 右键及其他复制粘贴等

    有的时候自己写的私下的个人小页面 里面有些自己的小秘密 或者别的东西 不想人别人审查元素看见 所以我提供了一段不让别人审查元素的代码(我个人比较喜欢弄有意思的东西  喜欢玩 ) //屏蔽右键菜单doc ...

  10. 使用脚手架创建vue项目之后会有很多警告,如何关闭它!

    依次打开build→webpack.base.conf.js文件,然后找到createLintingRule,把里面的内容选择性的删除即可,就是这么easy;