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

转载自: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. Language Guide (proto3) | proto3 语言指南(三)默认值

    默认值 解析消息时,如果编码的消息不包含特定的单数元素,则解析对象中的相应字段将设置为该字段的默认值.这些默认值是特定于类型的: string:默认值为空字符串 bytes:默认值为空字节 boole ...

  2. 设计模式c++(2)——策略模式

    策略模式定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客体. 书上的例子是鸭子,参考blog的例子是缓存算法.参考blog见:https://blog.csdn ...

  3. Filter过滤器除去部分URL链接

    在web.xml中配置的Filter如下: <filter> <filter-name>HazardousParametersFilter</filter-name> ...

  4. 37.Samba 文件共享服务1--配置共享资源

    1.Samba 服务程序的主配置文件包括全局配置参数和区域配置参数.全局配置参数用于设置整体的资源共享环境,对里面的每一个独立的共享资源都有效.区域配置参数则用于设置单独的共享资源,且仅对该资源有效. ...

  5. 分布式理论 PACELC 了解么?

    PACELC 基于 CAP 理论演进而来. CAP 理论是一个分布式系统中老生常谈的理论了: C(Consistency):一致性,所有节点在同一时间的数据完全一致. A(Availability): ...

  6. spring源码学习笔记之容器的基本实现(一)

    前言 最近学习了<<Spring源码深度解析>>受益匪浅,本博客是对学习内容的一个总结.分享,方便日后自己复习或与一同学习的小伙伴一起探讨之用. 建议与源码配合使用,效果更嘉, ...

  7. Scala类型参数(泛型)与隐式转换

    package com.yz9 import org.junit.Test import scala.collection.mutable.ListBuffer class test { @Test ...

  8. Educational Codeforces Round 2 E. Lomsat gelral(dsu)

    题目链接 题意:给你一棵以1为根n个点的树,问你以i为根的子树的众数和是多少 思路:dsu是一种优化暴力的手段 首先进行轻重链剖分 然后只记录重链的信息 轻链的信息就直接暴力查找 经过证明这样复杂度可 ...

  9. 关于cnblogs至github上blog的搬迁

    由于同学的强烈抗议(由于网页太卡,而且还有bug),所以在今天完成了github上blog的搭建,并且有了良好的阅读环境; Leceue

  10. 【noi 2.5_8465】马走日(dfs)

    最基本的dfs.这代码理应超时的,我也不知为何AC了......打表我都放弃了,因为最大的数据真的要跑很久...... 1 #include<cstdio> 2 #include<c ...