[美] Dov Bulka《提高C++性能的编程技术》

[美] Dov Bulka《提高C++性能的编程技术》

作者:[美] Dov Bulka

出版社:电子工业出版社

出版年:2011-3-28

评分:7.7

ISBN:9787121129377

所属分类:网络科技

书刊介绍

内容简介

很多程序员及软件设计师都认为,用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

相关推荐

微信二维码