这个问题说起来可大可小,可长可短,基本都是自己切身的经验总结。
高爷爷说过"过早的优化是万恶之源",做开发不可能一开始就想着优化,应该从全局考量,从各个角度去思考,权衡利弊,做出一个
符合大局利益的设计,下来再考虑如何优化。
优化是在现有已成形的设计架构下,做的性能提升。假如你一开始就设计一个低性能的架构,满足不了需求,这种只能推到重来,还优化干嘛。
经验总结如下:
(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