整本书写的有点啰嗦,读下核心要点就好。

转载自:https://www.cnblogs.com/opama/p/6446523.html

这是一本讲C++性能优化的书,我差点以为是effective C++的山寨版~~
书中的主要观点:
1.C语言的源代码与汇编语言之间仍然保持一种线性关系。C++打破了这种线性关系,开销的波动很大。
软件低效的根源:设计效率、编码效率。设计效率包括:算法和数据结构和程序分解。编码效率包括:语言结构、系统体系架构、库、编译器优化。
2.对象的构造和析构容易造成不必要的开销,只在需要时创建对象。I/O开销是昂贵的。引用传递比按值传递高效。内联消除了频繁调用的函数所产生的函数调用开销。
3.对象的创建引发对父对象和成员对象的递归创建(或清除)。要当心复杂层次中对象的组合使用。平衡编码的灵活性和性能,按需选择是编写功能强大的类还是仅仅满足当前所需功能的类,当然前者的开销会较大。
4.虚函数会从以下几个方面造成性能损失:需要维护虚表、通过指针调用、不能内联。无法内联虚函数是虚函数最大的性能损失。比起继承,模板可提供更好的性能,因为其在编译时就确定了类型。
5.临时对象会以构造函数和构析函数的形式损失两倍的性能。通过函数重载可以避免编译器为解决类型不匹配问题而创建临时对象。
6.系统函数提供强大功能的同时也会造成性能开销。如果只在单线程环境使用简单的内存管理工作,那么编写简单的内存管理器比调用系统的库函数划算得多。
7.内联能够减少调用开销。内联更应该是编译器的优化而不是程序员进行的优化。内联的缺点是可能导致带码的膨胀,缓存出错。有些方法不能内联,例如,不能内联递归方法。
8.通过向量的reserve()的方法预设向量容器的容量能加快大量元素插入的速度。
9.考虑采用引用技术的场合:1.目标对象消耗大量的资源;2.资源的分配和释放很昂贵;3.高度共享:由于使用赋值操作符和复制构造函数,所以引用计数可能比较大;4.引用的创建和清楚相对廉价。
10.90-20规则:80%的执行情况会便利29%的代码,80%的时间消耗在执行路径所遇到的20%的函数之上。20%的可能输入将占有80%的时间。
11.最后讲了点架构优化和设计优化。大部分和《深入理解计算机系统》等书说的差不多

efficient c++核心点的更多相关文章

  1. 论文阅读(Lukas Neuman——【ICDAR2015】Efficient Scene Text Localization and Recognition with Local Character Refinement)

    Lukas Neuman--[ICDAR2015]Efficient Scene Text Localization and Recognition with Local Character Refi ...

  2. Notes on 'Efficient Graph-Based Image Segmentation'

    Notes on Efficient Graph-Based Image Segmentation 算法的目标 按照一种确定的标准, 将图片分割成细粒度的语义区域, 即Super pixel. 算法步 ...

  3. Web Pages - Efficient Paging Without The WebGrid

    Web Pages - Efficient Paging Without The WebGrid If you want to display your data over a number of p ...

  4. HDU 5513 Efficient Tree

    HDU 5513 Efficient Tree 题意 给一个\(N \times M(N \le 800, M \le 7)\)矩形. 已知每个点\((i-1, j)\)和\((i,j-1)\)连边的 ...

  5. 论文笔记之:Fully Convolutional Attention Localization Networks: Efficient Attention Localization for Fine-Grained Recognition

    Fully Convolutional Attention Localization Networks: Efficient Attention Localization for Fine-Grain ...

  6. 【Deep Learning学习笔记】Efficient Estimation of Word Representations in Vector Space_google2013

    标题:Efficient Estimation of Word Representations in Vector Space 作者:Tomas Mikolov 发表于:ICLR 2013 主要内容: ...

  7. Zore copy(翻译《Efficient data transfer through zero copy》)

    原文:https://www.ibm.com/developerworks/library/j-zerocopy/ <Efficient data transfer through zero c ...

  8. cs231n spring 2017 lecture15 Efficient Methods and Hardware for Deep Learning 听课笔记

    1. 深度学习面临的问题: 1)模型越来越大,很难在移动端部署,也很难网络更新. 2)训练时间越来越长,限制了研究人员的产量. 3)耗能太多,硬件成本昂贵. 解决的方法:联合设计算法和硬件. 计算硬件 ...

  9. [论文阅读] MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications (MobileNet)

    论文地址:MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications 本文提出的模型叫Mobi ...

随机推荐

  1. MD5、sha加密

    MD5: 不可逆,一般用于密码的加密存储,数字签名,文件完整性验证 MD5码具有高度离散性,不可预测 MD5长度为128位,重复率几乎为0 易受密码分析的攻击 Sha: 对于长度小于2^64位的消息, ...

  2. 通过Portainer统一管理不同服务器的Docker

    通过Portainer统一管理不同服务器的Docker 一.可视化管理工具Portainer的安装 二.跨服务器管理Docker 2.1开启2375监听端口 2.2Portainer配置远程管理 一. ...

  3. JavaScript学习(一)——引擎,运行时,调用堆栈

    JavaScript引擎 谷歌 V8 引擎是流行的 JavaScript 引擎之一.V8 引擎在诸如 Chrome 和 Node.js 内部使用. 引擎包括两个主要组件: 动态内存管理 – 在这里分配 ...

  4. MySQL 数据库性能调优

    MySQL 数据库性能调优 MySQL性能 最大数据量 最大并发数 优化的范围有哪些 存储.主机和操作系统方面: 应用程序方面: 数据库优化方面: 优化维度 数据库优化维度有四个: 优化选择: 数据库 ...

  5. centos编译安装vim7.4

    ./configure --with-features=huge --enable-fontset --enable-gui=gtk2 --enable-multibyte --enable-pyth ...

  6. sqlite安装与封装后编译

    ========================安装sqlite=================官网下载安装包*.tar.gz格式./configure --prefix=/usr/server/s ...

  7. 【uva 10048】Audiophobia(图论--Floyd算法)

    题意:有一个N点M边的无向带权图,边权表示路径上的噪声值.有Q个询问,输出 x,y 两点间的最大噪声值最小的路径的该值.(N≤100,M≤1000,Q≤10000) 解法:N值小,且问多对点之间的路径 ...

  8. .net core mvc 获取Web根目录和内容根目录的物理路径

    从ASP.NET Core RC2开始,可以通过注入 IHostingEnvironment 服务对象来取得Web根目录和内容根目录的物理路径,如下所示: using Microsoft.AspNet ...

  9. 列表解析式 -- Python

    列表解析的语法:[expr for iter_var in iterable], 它迭代iterable对象的所有条目.其中的expr应用于序列的每个成员,最后的结果值是该表达式产生的列表,迭代变量并 ...

  10. github 无法访问

    描述: 1. ping 丢失 100% 2. git 失败 Failed to connect to github.com port 443: Timed out 3.打开网站 超时 解决: http ...