C++的性能检测

2014-11-24 09:04:46 ? 作者: ? 浏览: 0

C++程序,性能检测十分重要,尤其是在调优的时候,发现程序运行的热点有助于分析。


下面介绍一下我经常用的性能检测方法。


首先,先贴出要测试程序的源码:


#include
#include
#include
#include
#include
using namespace std;


#define MaxLen 100
#define MaxNum 10000
typedef struct _Key
{
_Key(int *p, int l)
{
len_ = l;
for(int i = 0; i < l; ++i)
p_[i] = p[i];
}
int p_[MaxLen];
int len_;
}Key;
typedef struct _KeyCmp
{
bool operator()(const Key &ls, const Key &rs)
{
if(ls.len_ == rs.len_)
{
for(int i = 0; i < ls.len_; ++i)
return ls.p_[i] < rs.p_[i];
return false;
}
else
return ls.len_ < rs.len_;
}
}KeyCmp;
typedef std::map *, KeyCmp> MyMap;


int main()
{
MyMap *mymap = new MyMap();
vector *sum_vec;
const Key *key;
int len;
int p[MaxLen];
srand( unsigned(time(NULL)));
for(int c = 0; c < MaxNum; ++c)
{
len = rand() % MaxLen + 1;
int sum = 0;
for(int i = 0; i < len; ++i)
{
p[i] = rand() % MaxNum;
sum += p[i];
}
key = new Key(p, len);
sum_vec = new vector();
sum_vec->push_back(sum);
mymap->insert(make_pair(*key, sum_vec));
delete key;
}
for(MyMap::iterator it = mymap->begin(); it != mymap->end(); ++it)
{
delete it->second;
}
delete mymap;
return 0;
}


常用的性能检测方法是使用grpof 或使用valgrind 两种方法。


这两种方法都要求程序在编译时使用-pg -g参数;


都会用到gprof2dot.py这个程序,gprof2dot.py程序用于将性能分析结果转化为dot文件。


dot是一种编写绘图脚本的语言,它属于graphviz软件,是一群牛人开发的。可以去这里看看。


言规正转,使用gprof查看性能分析结果,过程如下:


-->

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: