很多程序员及软件设计师都认为,用c++开发意味着放弃程序性能提升的可能。在很多人眼里,使用c++来开发那些效率至上的应用无疑将导致一场空前的浩劫。因此,在许多性能敏感型领域,诸如网络协议、操作系统内核、移动设备驱动等等,c++都常常处于被冷落的境地。
而本书正是对这种错误观念的最有力回击。《提高c++性能的编程技术》揭示了c++开发高效应用的潜力,向广大读者展示了大量实用的c++面向对象编程技术。通过改善普遍藏匿于设计编码过程暗处的缺陷,这些技术无一不为c++的性能提升带来最为强劲的动力。
《提高c++性能的编程技术》详细讨论了临时对象、内存管理、继承、虚函数、内联、引用计数以及stl等一切有可能提升c++效率的细节内容。最终,该书将c++性能提升的各种终极利器,完美地呈现在广大读者的面前!无论你是相关领域的从业人员,还是c++程序设计爱好者,或者是渴望突破编程瓶颈、大幅提升自我修为的程序设计爱好者,本书都必将使你获益良多。
导读 1
第1章 跟踪实例 10
1.1 初步跟踪的实现 12
1.2 要点 18
第2章 构造函数和析构函数 20
2.1 继承 20
2.2 复合 32
2.3 缓式构造 34
2.4 冗余构造 37
2.5 要点 41
第3章 虚函数 43
3.1 虚函数的构造 43
3.2 模板和继承 46
3.3 要点 51
第4章 返回值优化 52
4.1 按值返回机制 52
4.2 返回值优化 54
4.3 计算性构造函数 57
4.4 要点 58
.第5章 临时对象 59
5.1 对象定义 59
5.2 类型不匹配 60
5.3 按值传递 63
5.4 按值返回 64
5.6 使用op=()消除临时对象 66
5.7 要点 67
第6章 单线程内存池 69
6.1 版本0:全局函数new()和delete() 70
6.2 版本1:专用rational内存管理器 71
6.3 版本2:固定大小对象的内存池 76
6.4 版本3:单线程可变大小内存管理器 80
6.5 要点 87
第7章 多线程内存池 88
7.1 版本4:实现 88
7.2 版本5:快速锁定 91
7.3 要点 95
第8章 内联基础 96
8.1 什么是内联? 96
8.2 方法调用的代价 100
8.3 因何内联? 105
8.4 内联详述 105
8.5 虚方法的内联 107
8.6 通过内联提升性能 108
8.7 要点 109
第9章 内联——站在性能的角度 110
9.1 调用间优化 110
9.2 何时避免内联? 115
9.3 开发阶段及编译期的内联考虑 118
9.4 基于配置的内联 119
9.5 内联规则 123
9.6 要点 125
第10章 内联技巧 126
10.1 条件内联 126
10.2 选择性内联 127
10.3 递归内联 129
10.4 对静态局部变量进行内联 134
10.5 与体系结构有关的注意事项:多寄存器集 136
10.6 要点 137
第11章 标准模板库 138
11.1 渐近复杂度 138
11.2 插入 139
11.3 删除 146
11.4 遍历 149
11.5 查找 150
11.6 函数对象 152
11.7 比stl更好? 154
11.8 要点 157
第12章 引用计数 158
12.1 实现细节 160
12.2 已存在的类 172
12.3 并发引用计数 175
12.4 要点 179
第13章 编码优化 180
13.1 缓存 182
13.2 预先计算 183
13.3 降低灵活性 184
13.4 80-20法则:加快常用路径的速度 185
13.5 延迟计算 189
13.6 无用计算 191
13.7 系统体系结构 192
13.8 内存管理 193
13.9 库和系统调用 194
13.10 编译器优化 197
13.11 要点 198
第14章 设计优化 200
14.1 设计灵活性 200
14.2 缓存 204
14.3 高效的数据结构 208
14.4 延迟计算 208
14.5 getpeername() 209
14.6 无用计算 212
14.7 失效代码 213
14.8 要点 214
第15章 可扩展性 215
15.1 对称多处理器架构 217
15.2 amdahl定律 218
15.3 多线程和同步 220
15.4 将任务分解为多个子任务 221
15.5 缓存共享数据 222
15.6 无共享 224
15.7 部分共享 226
15.8 锁粒度 228
15.9 伪共享 230
15.10 惊群现象 231
15.11 读/写锁 233
15.12 要点 234
第16章 系统体系结构相关话题 235
16.1 存储器层级 235
16.2 寄存器:存储器之王 237
16.3 磁盘和内存结构 241
16.4 缓存效应 244
16.5 缓存抖动 246
16.6 避免跳转 247
16.7 使用简单计算代替小分支 248
16.8 线程化的影响 249
16.9 上下文切换 251
16.10 内核交叉 254
16.11 线程化选择 255
16.12 要点 257
参考文献 258
索引 260
《思维迷宫(爱智书系)》内容简介:哲学不仅帮助人认识世界、认识自我,还能够认识我们的“认识”,看看我们是怎样思维的,我们的
《中国画颜色的研究》内容简介:《中国画颜色的研究》一书初版于1955年,由朝花美术出版社出版。《中国画颜色的研究》是作者研究传
《微信营销与运营一册通》内容简介:《微信营销与运营一册通》深入介绍了当今最为火热的话题——微信营销,内容全面、系统和深入。
《北海道漫步》内容简介:作为近年来热门的旅行目的地,北海道以其独特的自然风貌及冰雪景观吸引着世界各地的旅行者。本书从北海道
《打开:周濂的100堂西方哲学课》内容简介:★100篇有趣、有料,不高冷、不轻佻的哲学普及文章;一部有营养、有态度,读得懂、读得
《良渚文化村》内容简介:良渚文化村位于杭州市西北的余杭,是在城市扩张和农村城市化的背景下,从2000年开始由民营企业开发建设的
《纳兰词今译》内容简介:本书精选纳兰性德词作中的经典作品九十八首,每一首均由四个板块组成:1.相关背景、典故的简要介绍。2.诗
《绝密原型档案》内容简介:本书重心是阐述如何设计产品原型,笔者根据多个项目的实战经验,在解读原型制作过程的同时分享了一些切
《燕闲清赏》内容简介:本书以晚明为研究断限,以士人生活为考察基点,立足书法艺术的本体范畴,从社会学、思想史和艺术史诸角度,
《用微课学计算机应用基础(Windows 7+Office 2010)》内容简介:本书是职业院校计算机专业及其他专业的计算机基础教材,通过翔实的
《一本书读懂内部审计》内容简介:内部审计工作涉及公司经营的每一个环节,小到一份经济合同、一张财务报表,大到业务流程、部门绩
《上下百亿年:太阳的故事》内容简介:《上下百亿年:太阳的故事》将从一次虚拟的古希腊之旅开始,逐步深入地向读者介绍太阳这颗带
基于实用、实践、前瞻性、学习的原则,笔者精选了近300段JavaScript代码和400种解决方案,覆盖了几乎所有的脚本处理模块,最大程
《多云和混合云:云原生多集群和应用管理》内容简介:这是一本讲解如何在多云/混合云的环境下进行多集群管理、多集群应用编排以及应
《DSP原理及应用》以TI公司的TMS320C54x系列芯片为描述对象,以应用系统设计为主线,系统地介绍了DSP芯片的基本结构、开发和应用
计算机网络教程-(第3版) 本书特色 参考计算机专业考研大纲,体现了作者多年的教学经验,吸收了多种国外著名教材的优点,强调基本原理,概念准确、深入浅出、理论适中...
《电话的社会影响》是一本论文集,涉及众多的研究领域。它涵盖了电话在历史、文学、城市发展中的各个不同角色。提示了电话与女性
《PLC教程(第3版)》是一本在国外广受欢迎的PLC教材。《PLC教程(第3版)》从PLC的共性特征出发,重点讲述PLC的基本工作原理,并提供
《当代大学生马克思主义理论教育链论》内容简介:当代大学生马克思主义理论教育链论是新时代中国特色社会主义马克思主义理论研究和
《元好问诗选》内容简介:元好问,字遗山,金末元初著名文学家,七岁能诗,年十四,从郝晋卿学诗,二十岁成学,名闻京师。兴定五年