C++性能测试用例
2003-10-14 00:56
761 查看
最近看了<<重构:改善现有代码...>>里面的J***A人写了一个测试用例,吹嘘用到了J***A反射等"高级功能",我也写一些测试代码看看.
首先是代表性能数据的类:
class CapabilityCount
{
public:
static void Out();
char* m_clue;
CapabilityCount *m_pre;
DWORD m_frequency;
DWORD m_times;
static CapabilityCount*head;
CapabilityCount(char* clue);
};
CapabilityCount*CapabilityCount::head=0;
CapabilityCount::CapabilityCount(char*clue)
{
m_pre=head;
head=this;
m_clue=clue;//连成一片,接受一个字符串作输出标识.
}
void CapabilityCount::Out()//输出到文本文件
{
std::fstream out;
CTime time;
out.open ("d://testcount.txt",std::ios_base::ate|std::ios_base::out);
ASSERT(out.is_open ());
time=CTime::GetCurrentTime();
out<<"is begin write in"<<time.GetDay() <<" : "
<<time.GetHour ()<<" : "
<<time.GetMinute ()<<"/n";
CapabilityCount *psearch=head;
while(psearch)
{
out<<"type:"<<psearch->m_clue<<"all time(milliseconds):"<<psearch->m_times
<<" be call frequency :"<<psearch->m_frequency
<<" average time(milliseconds):"
<<psearch->m_times /psearch->m_frequency<<"/n/n";
psearch=psearch->m_pre ;
}
}
然后是一个"改动者",负责更新CapabilityCount类
class CapabilityCountHelper
{
DWORD m_begintime;
CapabilityCount &m_supervised;
public:
CapabilityCountHelper(CapabilityCount& in);
~CapabilityCountHelper();
};
CapabilityCountHelper::CapabilityCountHelper(CapabilityCount& in):
m_supervised(in)
{
m_begintime=GetTickCount();
++m_supervised.m_frequency;//被调用的次数
}
CapabilityCountHelper::~CapabilityCountHelper()
{
DWORD spend=GetTickCount()-m_begintime;
m_supervised.m_times +=spend;//花掉的总时间
}
知道怎么用吧?
在要测试的函数前加上
static CapabilityCount //一定要有static哦
CapabilityCountInstance("function name or else");
CapabilityCountHelper CapabilityCountHelperInstance(CapabilityCountInstance);
嫌麻烦?
#define KILL_BILL__KILL_BILL__KILL_BILL(clue) static CapabilityCount /
CapabilityCountInstance(clue); /
CapabilityCountHelper CapabilityCountHelperInstance(CapabilityCountInstance) /
最近想看<<杀死比尔>>,虽然杀的不是我想的:(
你可以用更精确的时间函数来测试.不过这不关我事;
你也可以在内联函数中或甚至上面的CapabilityCount::Out函数中加入
KILL_BILL__KILL_BILL__KILL_BILL("CapabilityCount::Out");
发生什么事可不关我事:(
C++程序员+csdn果然有搞头!..哇噻,衣服上怎么被浇了屎!!!???
首先是代表性能数据的类:
class CapabilityCount
{
public:
static void Out();
char* m_clue;
CapabilityCount *m_pre;
DWORD m_frequency;
DWORD m_times;
static CapabilityCount*head;
CapabilityCount(char* clue);
};
CapabilityCount*CapabilityCount::head=0;
CapabilityCount::CapabilityCount(char*clue)
{
m_pre=head;
head=this;
m_clue=clue;//连成一片,接受一个字符串作输出标识.
}
void CapabilityCount::Out()//输出到文本文件
{
std::fstream out;
CTime time;
out.open ("d://testcount.txt",std::ios_base::ate|std::ios_base::out);
ASSERT(out.is_open ());
time=CTime::GetCurrentTime();
out<<"is begin write in"<<time.GetDay() <<" : "
<<time.GetHour ()<<" : "
<<time.GetMinute ()<<"/n";
CapabilityCount *psearch=head;
while(psearch)
{
out<<"type:"<<psearch->m_clue<<"all time(milliseconds):"<<psearch->m_times
<<" be call frequency :"<<psearch->m_frequency
<<" average time(milliseconds):"
<<psearch->m_times /psearch->m_frequency<<"/n/n";
psearch=psearch->m_pre ;
}
}
然后是一个"改动者",负责更新CapabilityCount类
class CapabilityCountHelper
{
DWORD m_begintime;
CapabilityCount &m_supervised;
public:
CapabilityCountHelper(CapabilityCount& in);
~CapabilityCountHelper();
};
CapabilityCountHelper::CapabilityCountHelper(CapabilityCount& in):
m_supervised(in)
{
m_begintime=GetTickCount();
++m_supervised.m_frequency;//被调用的次数
}
CapabilityCountHelper::~CapabilityCountHelper()
{
DWORD spend=GetTickCount()-m_begintime;
m_supervised.m_times +=spend;//花掉的总时间
}
知道怎么用吧?
在要测试的函数前加上
static CapabilityCount //一定要有static哦
CapabilityCountInstance("function name or else");
CapabilityCountHelper CapabilityCountHelperInstance(CapabilityCountInstance);
嫌麻烦?
#define KILL_BILL__KILL_BILL__KILL_BILL(clue) static CapabilityCount /
CapabilityCountInstance(clue); /
CapabilityCountHelper CapabilityCountHelperInstance(CapabilityCountInstance) /
最近想看<<杀死比尔>>,虽然杀的不是我想的:(
你可以用更精确的时间函数来测试.不过这不关我事;
你也可以在内联函数中或甚至上面的CapabilityCount::Out函数中加入
KILL_BILL__KILL_BILL__KILL_BILL("CapabilityCount::Out");
发生什么事可不关我事:(
C++程序员+csdn果然有搞头!..哇噻,衣服上怎么被浇了屎!!!???
相关文章推荐
- c++性能测试
- 利用C++模板,代替虚函数,实现类的静态多态性(加入性能测试部分)
- 各排序算法的C++实现与性能测试(转)
- [转]某网站性能测试用例
- java8对stream串、并行流的测试性能的用例
- 测试用例之性能测试用例
- C++访问lua函数性能测试结果
- 性能测试 lua VS java VS nodejs VS c++
- 测试用例之性能测试用例
- 各排序算法的C++实现与性能测试
- 一个简单的C++性能测试工具(ms级别)
- c++ poco StreamSocket tcpclient测试用例
- 测试用例之性能测试用例
- 通用型C/C++程序性能测试Benchmark的简单实现
- 插入排序的性能测试对比(C与C++实现)
- c++ poco Connector tcpclient测试用例
- 转:性能测试用例设计策略
- 在C/C++代码中使用SSE等指令集的指令(5)SSE进行加法运算简单的性能测试
- 为了offer系列——二分查找(C++),附测试用例
- linux环境下 C++性能测试工具 gprof 和gprof2dot