C++性能优化备忘

==影响性能的常见因素==
* 访问/读写慢速的磁盘,网络设备或外部设备
* 频繁的new/delete对象,尤其是复杂的大对象
* 频繁的函数调用也会带来性能上的开销
* 频繁的创建进程/线程,以及数据库/网络连接
* 不合适的数据结构和低效的算法

==针对这些因素的相应解决方法==
* 使用内部缓存以减少读取外设的次数,将读写外设的操作放到单独的线程中
* 使用内存池或其他内存优化策略, 并尽量多使用引用或指针,以减少临时对象的产生
* 可以使用内联函数或宏提高性能,并限制不必要的虚拟函数
* 使用进程池/线程池/连接池
* 针对不同的应用场合,采用相宜的数据结构和算法

 

==理论篇==

Effective C++

Effcient C++

The art of computer programming

 

==实践篇==
* 找出影响性能的瓶颈
* 通过测试得到性能的相关数据
* 不断的尝试修改,测试,观察,分析

//as the below example, we can find
//++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 CProduct::
operator ++ ( int )
{
     CProduct tmp(
* this );
     
++ ( * this );
     
return  tmp;
}


 Refer

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值