How to improve the performance of C++ Application
* 访问/读写慢速的磁盘,网络设备或外部设备
* 频繁的new/delete对象,尤其是复杂的大对象
* 频繁的函数调用也会带来性能上的开销
* 频繁的创建进程/线程,以及数据库/网络连接
==针对这些因素的相应解决方法==
* 使用内部缓存以减少读取外设的次数,将读写外设的操作放到单独的线程中
* 使用内存池或其他内存优化策略, 并尽量多使用引用或指针,以减少临时对象的产生
* 可以使用内联函数或宏提高性能,并限制不必要的虚拟函数
* 使用进程池/线程池/连接池
* 针对不同的应用场合,采用相宜的数据结构和算法
==理论篇==
Effective C++
Effcient C++
The art of computer programming
==实践篇==
* 找出影响性能的瓶颈
* 通过测试得到性能的相关数据
* 不断的尝试修改,测试,观察,分析
//++i is better than i++
//a+=b is better than a=a+b
class CProduct
{
friend const CProduct operator+(const CProduct& lhs,const CProduct& rhs);
public:
CProduct(int price);
CProduct(const CProduct& rhs);
virtual ~CProduct();
operator==(const CProduct& rhs) ;
CProduct& operator=(const CProduct& rhs);
CProduct& operator+=(const CProduct& rhs);
CProduct& operator++();
CProduct operator++(int);
private:
int m_nPrice;
};
CProduct::CProduct(int price):m_nPrice(price)
{
}
CProduct::~CProduct()
{
}
CProduct::CProduct(const CProduct& rhs):m_nPrice(rhs.m_nPrice)
{
}
CProduct& CProduct::operator=(const CProduct& rhs)
{
if(this==&rhs)
return *this;
m_nPrice=rhs.m_nPrice;
return *this;
}
const CProduct operator+(const CProduct& lhs,const CProduct& rhs)
{
return CProduct(lhs.m_nPrice+rhs.m_nPrice);
}
CProduct& CProduct::operator+=(const CProduct& rhs)
{
m_nPrice+=rhs.m_nPrice;
return *this;
}
CProduct& CProduct::operator++()//prefix
{
++m_nPrice;
return *this;
}
{
CProduct tmp(*this);
++(*this);
return tmp;
}
浙公网安备 33010602011771号