自制性能测试类

商业软件包往往价格昂贵,并且需要一个过程之后才能有效地使用它们。针对这一点,本文拟实现一个简单有效的类,它能自动计算并报告函数、循环和代码块执行的时间。

自动化与简易性设计

利用类对象构造函数和析构函数的执行特性(它们分别在声明和销毁时执行),性能测试类的计时是在构造函数开始的,计算与报告某个操作的执行时间是在析构函数中进行的。测试仪提供毫秒级的结果。实现过程中将使用clock()返回程序开始后的处理器时钟时间(与平台相关的时间单位)。宏CLK_TCK表示特定机器每秒时钟数。

性能测试类定义如下:

#include <time.h>
class stopwatch
{
public:
stopwatch() : start(clock()){} //开始计时
~stopwatch();
private:
clock_t start;
};

构造函数将成员start初始化为当前的时钟。除了析构函数外没有定义其它的成员函数。析构函数再次调用clock(),计算构造对象后经过的时间并显示结果:

#include <iostream>
using namespace std;
stopwatch::~stopwatch()
{
clock_t total = clock()-start; //获得所用时间
cout<<"此操作所用时间: "<<total<<endl;
cout< <"转换成秒数: "<< double(total/CLK_TCK) <<endl;
}

注意clock_t和CLK_TCK是整数。因此在进行除法操作前必须将它们转换成double类型。为了延时屏幕输出,在析构函数中可以加上下列代码:

char dummy;

cin >>dummy; //延时屏幕输出

另外也可以将不同性能侧面的结果写入性能日志文件。

用所创建的类测试性能

为了对代码块进行测试,先在代码块的开始创建一个本地类实例,假设要测试的代码是下列循环:

string *pstr[5000]; //指针数组
for (int i=0;i<5000;i++)
{
pstr[i] = new string;
}

此循环在堆中分配5000个串对象。

用大括弧将上面的代码块括起来并在代码块开始声明类对象实例:

{
stopwatch watch; // 开始计时
string *pstr[5000];
for (int i=0;i<5000;i++)
{
pstr[i] = new string;
}
} // 摧毁计时器并报告结果

时间: 2024-08-03 00:24:39

自制性能测试类的相关文章

风行网打造《星风范》访谈应采儿爆料婚姻生活

如今已是已婚身份的应采儿丝毫没有停下工作的脚步,12月9日,她的两部影片<追爱>和<不怕贼惦记>同日公映,同样由她主演的电视剧<赵氏孤儿> 也于近日杀青.凭借在<大捕房>中一人分饰四角的抢眼表现,她还荣获了华鼎奖"最佳喜剧女演员奖".记者获悉,日前,"大眼美女"应采儿在百忙之中接受了 风行网<星风范>的独家专访,畅谈<不怕贼惦记>中不一样的自己.与陈小春的婚姻生活.组建"妖女帮&quo

北青新媒体入驻风行网 联合打造《红人访》

中介交易 SEO诊断 淘宝客 云主机 技术大厅 全球领先的新一代视频门户风行网(fun.tv)日前与北青新媒体达成战略合作,北青新媒体背靠北京青年报社的优质品牌资源,拥有北青网.移动平台.机场LED.城市户外.官方微博微信和强大的渠道数据库,旗下知名节目<红人上网>将和风行网自制访谈类综艺节目<星风范>强强联手,双方整合优势资源和媒体力量,重新改版联合出品一档文娱深度人物访谈节目<红人访>.这也是风行网推出业内首个开放平台之后最大体量和第一个跨媒体的媒介联合.联动.联运

奇艺搜狐就正版长视频数据解读相争

本报记者 廖庆升 一直不太平静的网络视频市场再起波澜. 一场被称之为站VV"罗生门"事件悄然现身在视频网站中,这一次,矛头直指正版长视频.刚刚结束的易观新媒体营销年会上,奇艺透露在正版长视频方面时长独占鳌头搜狐视频不甘示弱,迅速引用数据发布文章宣称自己是长视频第一.双方就数据的解读展开缠斗. 数据之争频现 记者发现.双方所引用的是来同一份数据,均来自于球知名互联网流量监测分析机构comScore.扑朔迷局背后,究竟谁是正版长视频的龙头?新的一轮争夺业已在正版长视频领域暗流涌动,即将或者

牛津大学自制3D打印机 造出类人体细胞组织

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;    [ 科技讯]4月7日消息,据国外媒体报道 牛津大学 刚刚利用了一部自制的3D打印机,成功的打印出模仿人体某些细胞功能的人造组织.     据悉,这个人造组织是由很多个直径约50微米的脂包水点所滴出来的,其有潜力用作运送药物到人体内指定的位置丶修补受损的细胞,也有潜力组成路径传递神经 讯息.更重要的是,这些人造组织是道德中性,其 不涉及基因组,也不会自我复制,

PHP归档phar性能测试

PHP自从5.3后新增PHAR归档,Phar 归档的概念来自 Java 技术的 JAR 归档,它允许使用单个文件打包应用程序,这个文件中包含运行应用程序所需的所有东西.该文件不同于单个可执行文件,后者通常由编程语言生成,比如 C,因为该文件实际上是一个归档文件而非编译过的应用程序.因此 JAR 文件实际上包含组成应用程序的文件,但是考虑到安全性,不对这些文件进行仔细区分.Phar 扩展正是基于类似的理念,但是在设计时主要针对 PHP 的 Web 环境.同样,与 JAR 归档不同的是,Phar 归

两年前写的一个关于六款WEB上传组件性能测试与比较

web|比较|上传|性能|上传|性能   六款WEB上传组件性能测试与比较     随着网络大潮的持续深入,企业管理网络化已成为一种趋势,越来越多的企业用户把自己的MIS.OA及各类管理系统搬到了WEB上,深刻地体现了软件"人性化"的一个方面――你不需要安装软件,只要你有操作系统,只要你有浏览器,就可以使用我的软件!     但这些使用简单方便的WEB页面,却有一点经常让人感到恼火,当你想上传一些资料或图片到WEB上的时候,发觉稍大点的文件的上传速度慢得让人难以忍受,或者干脆就让你用F

妙用VBScript自制IE工具栏按钮

vbscript|按钮 IE工具栏上的各种按钮可不是Microsoft的专利,普通用户一样能够对其进行自定义,添加想设置的按钮,至于添加的方法,很多资料上都介绍过.具体的实现方式不外乎两种,一是使用冗长且复杂的VC或VB代码程序,这对普通用户来说要求是过高了一点,通常搞得人满头雾水而不达目的:二是用手工的方法来完成,但是这种方法因为要大幅度地修改系统注册表,系统极不安全,一不小心就会弄巧成拙,让你重新安装系统! 我这里介绍一个折衷的方法,用VBScript自制IE工具栏按钮,它既不需要冗长复杂的

Java中的类反射机制

一.反射的概念 :反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力.这一概念的提出很快引发了计算机科学领域关于应用反射性的研究.它首先被程序语言的设计领域所采用,并在Lisp和面向对象方面取得了成绩.其中LEAD/LEAD++ .OpenC++ .MetaXa和OpenJava等就是基于反射机制的语言.最近,反射机制也被应用到了视窗系统.操作系统和文件系统中. 反射本身并不是一个新概念,它可能会使我们联想到光学中的反射概念,尽管计算机科学

&amp;gt; 第五章 类(rainbow 翻译)*1 (来自重粒子空间)

<<展现C#>> 第五章 类(rainbow 翻译)出处:http://www.informit.com\matter\ser0000002正文:第五章  类       前一章讨论了数据类型和它们的用法.现在我们转移到C#中至关重要的结构--类.没有了类,就连简单的C#程序都不能编译.这一章假定你知道了一个类的基本组成部分:方法.属性.构造函数和析构函数. C#在其中增加了索引和事件.       在这一章中,你学到下列有关类的话题.      . 使用构造函数和析构函数