Linux下服务端程序性能优化

这个问题说起来可大可小,可长可短,基本都是自己切身的经验总结。

 

高爷爷说过"过早的优化是万恶之源",做开发不可能一开始就想着优化,应该从全局考量,从各个角度去思考,权衡利弊,做出一个

 

符合大局利益的设计,下来再考虑如何优化。

 

优化是在现有已成形的设计架构下,做的性能提升。假如你一开始就设计一个低性能的架构,满足不了需求,这种只能推到重来,还优化干嘛。

 

经验总结如下:

 

(1) 以事件驱动方式替代轮询

 

(2) 减少系统调用

 

(3) 使用零拷贝, epoll等高性能系统API

 

(4) 尽量以异步代替同步,将一段任务分成多个线程或者进程处理,发挥多核流水线操作优势

 

(5) 合理设置和使用各种缓存

 

(6) 池机制和预分配

 

(7) 延迟分配,效仿fork 的Copy On Write机制

 

(8) 尽量无锁设计, Double Check,自旋锁, 读写锁

 

(9) 减少内存无效操作(mem系列), 无锁环形缓冲区, 使用writev/readv

 

(10) 设置tcp发送/接收缓冲区大小

 

(11) C++中尽量减少临时对象产生

 

切勿滥用String + 操作

 

传递参数尽量避开传值方式

 

考虑vtable代价

 

        使用错误码代替异常

 

字符串常量长度使用sizeof,而不要用strlen

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值