很多程序员及软件设计师都认为,用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
《计算机主板维修不是事儿(第2版)》内容简介:本书是计算机主板芯片级维修的技术指导参考书,从电路基础、电路工作原理到维修思路
《微电影大导演》内容简介:一个行业的健康持续发展,势必需要更多有志之士,更多人的参与对于精品内容的产生将起到极大的推动作用
《每天最重要的3件事》内容简介:时间管理不是让人一味忙碌,而是让人有时间享受生活。每天做到以下三件事,你就可以拥有高效、有序
作者简介:JeanWalrand在美国加州大学伯克利分校取得EECS博士学位,自1982年以来一直在该校任教,研究兴趣包括随机过程、排队论、
《森林资源管理信息技术应用与实践》内容简介:森林是陆地生态系统的主体,林业是生态环境建设的主体。森林资源是决定林业生存与发
单片机中级教程--原理与应用(第2 版) 内容简介 本书为普通高等教育“十一五”国家级规划教材,以80C51系列单片机为主线,系统地介绍了单片机的组成、工作原理...
信息系统项目管理师教程-(第3版) 本书特色 本书是全国计算机技术与软件专业技术资格(水平)考试办公室组织编写的考试指定用书,本书根据2017年出版的《信息系统...
有人说Google让我们变得更笨,有人说Facebook出卖了我们的隐私,有人说Twitter将我们的注意力碎片化。在你担忧这些社会化媒体让我
本书是一本总结实践经验和成果的作品,主要为测试人员规划、设计、实施Web性能测试而编写。本书既包含Web性能测试的基础理论,又
《我看电商2》内容简介:《我看电商2》是行业畅销书《我看电商》的续集。《我看电商》自出版以来,连续印刷14 次,受到业界人士和广
《全国通信专业技术人员职业水平考试参考用书:通信专业综合能力(中级)》依据《全国通信专业技术人员职业水平考试大纲》要求编写。
《通信电路原理学习指导书》共分8章,分别讲述了绪论、滤波器、高频放大器、非线性电路、正弦波振荡器、调制与解调、锁相环路以及
《国外计算机科学教材系列•分布式计算(第2版)》涵盖了分布式计算理论的主要内容,强调不同模型之间的相似点,同时也解释了它们之
《媒商十堂课》内容简介:世界上只有2%的人意识到,他们的一言一行,一颦一笑,都在作为重要的信息构建着独一无二的“个人”品牌。
《张力与限界:中央苏区的革命(1933~1934)》内容简介:中央苏区史,在中共党史中是一段“别样的经历”。中共在1927年国共分裂后
《走出自闭——如何与孤独症儿童有效沟通互动的38堂康复课》内容简介:孤独症是一种伴随一个人终生的神经发育迟缓病症,所以不论是
CX5477AUTOCAD2009电气设计110例附光盘 本书特色 《AutoCAD 2009电气设计110例》特点:专业实用职场红宝书超长时间视频讲解双栏排版...
《近代法律人的世界》内容简介:本书为中国社会科学院近代史研究所法律史研究群、华中科技大学近代法研究所、华东政法大学法律文明
开源软件是当今计算机工业界最具活力的领域,例如Linux这个公开了源代码的UNIX操作系统在服务器市场上已经与许多大公司的产品分庭
本书是作者多年的创作手记结集,集中呈现作者几十年的创作理念、方法、作品、哲思等,文字或灵动,或犀利,既能从中透视当代中国