【More Effective C++】效率
条款十六:80-20法则
20%的代码占用了80%的执行时间、内存等等,因此需要化大部分时间编写
条款十七:缓式评估
利用 区分读写、生成表达式等方式避免立刻计算
条款十八:分期摊还预期的计算成本
超急评估:例如某些容器总是以二倍当前容量扩展。
某些运算的结果不总是需要时利用缓式评估可以改善效率,而结果被多次需要时利用超急评估可以改善效率。
条款十九:了解临时对象的来源
- 匿名对象发生在两种情况:1、函数调用中的隐式转换。2、函数返回对象。
- 临时对象不能被绑定到reference-to-non-const
条款二十:协助完成“返回值优化(RVO)”
- 某些函数(operator *)只能返回对象
- 可以返回constructor arguments(return表达式),利用编译器优化避免临时对象的生成
条款二十一:利用重载技术避免隐式类型转换
如名字所示。
条款二十二:考虑以操作符复合形式取代独身形式
operator+=、 operator-=。。。实现 operator+、 operator-
1 class classA{ 2 public: 3 ... 4 classA& operator+=(const calssA& rhs); 5 classA& operator-=(const calssA& rhs); 6 }; 7 8 //用operator+=实现operator+ 9 const classA operator+(const classA& lhs, const classA& rhs){ 10 return calssA(lhs)+=rhs; 11 } 12 //用operator-=实现operator- 13 const classA operator-(const classA& lhs, const classA& rhs){ 14 return calssA(lhs)-=rhs; 15 }
条款二十三:考虑使用其他程序库
如名字所示。
条款二十四:了解虚函数、多重继承的成本
- 虚函数类含有vtbl,vtbl与类内虚函数的个数有关
- 虚函数类产生的对象含有一个vptr,vptr指向类的vtbl,因此虚函数对象占用内存会多一些。
- 虚函数往往不能被声明为inline,虚函数作用在运行时,而inline发生在编译时。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧