很多程序员及软件设计师都认为,用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
《中文版3ds Max 2013实例教程(全彩超值版)》内容简介:这是一本全面介绍中文版3ds Max 2013各项功能的书。《中文版3ds Max 2013
本书总共有49个栏目,以一位微软内部人士的视角,揭示了关于软件编码、软件测试和项目管理的残酷现实。作者文笔犀利,见解独到,
HeadFirstSQLisaboutRDBMS(databases)specificallymySQL(version5.0ornewer)andinclud...
《Node.js实战(第2版)》内容简介:本书是在《Node.js实战》基础上打造的全新著作,由多位Node核心框架构建者和经验丰富的Web开发
方兴东,清华大学博士。1996年起开始涉足互联网领域,执著于中国互联网的推动,被《南方周末》冠为中国的“网络旗手”。1999年9月
《心理学与九型人格》内容简介:追求尽善尽美的完美型、古道热肠的奉献型、脚踏实地的实干型、充满艺术气息的浪漫型、头脑冷静的观
本书提出了一个框架,用于分析程序设计语言的语法、操作和语义性质,该框架基于称为类型化λ演算的数学系统。λ演算的主要特色是
SAP从入门到精通 本书特色 源于实践 成就行家上海软件行业协会 秘书长 杨根兴、江苏省软件行业协会副会长 徐雷鼎力推荐6个核心模块的深入解析50个疑难解答和实...
《生活中的运筹学》内容简介:为了帮助对运筹学感兴趣的读者掌握最基础也最实用的运筹方法,本书分10章阐述了运筹学中最基本的思想
《MMA综合格斗实战技术训练全书(全彩图解版)》内容简介:本书首先介绍了MMA的规则、格斗体位及训练方法等基础知识。接着,本书采
《郭沫若散文》内容简介:郭沫若一生涉足广泛、著作甚丰。他的散文气势浩荡,清丽、浪漫,富有艺术魅力。自传性构成了郭沫若散文明
Ineachoftheother"LittleMaid"booksisthestoryofanAmericangirlduringtheRevolution.
全国数据库技术水平考试一级学员教材 本书特色 本书按照教学大纲中规定的内容,系统、全面地介绍了数据库水平考试所涵概的内容。既重视基本理论、基础知识的阐述,又指导...
《计算机科学概论(Python版)》内容简介:本书是美国哈维玛德学院“计算机科学通识”课程的配套教材,用独特的方法介绍计算机科学
2010年編輯最愛商業書籍。──財富雜誌2010年書評最愛書籍。──紐約客雜誌2010年度商業與投資類十大好書。──亞馬遜書店2010年
《精彩江苏·画派系列:常州画派》内容简介:常州画派由一批生活在江南文化古城常州的画家群体组成,恽寿平是常州画派开山鼻祖,以
《Kotlin从入门到进阶实战》内容简介:本书从Kotlin语言的基础语法讲起,逐步深入到Kotlin进阶实战,并在最后配合项目实战案例,重
《午夜降临前抵达》内容简介:本书是作家刘子超的旅行文学作品。在这本书里,他深入欧洲的中部,展开了一次逃脱和寻找的漫游。中欧
《从量子到宇宙》内容简介:本书以各种不可思议的量子现象为主线,以物理学家们所做的各种令人惊奇的实验为脉络,循序渐进地介绍了
《15分钟画漫画:马克笔画人物超简单》内容简介:用色彩鲜艳的马克笔画出自己喜欢的漫画形象,一定是喜欢画漫画的你很想去做的事情