《提高C++性能的编程技术》PDF下载

  • 购买积分:10 如何计算积分?
  • 作  者:(美)Dov Bulka,(美)David Mayhew著;常晓波,朱剑平译
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2003
  • ISBN:7302065500
  • 页数:235 页
图书介绍:本书分析某些C++程序低效原因,打破C++语言本身就是一种低效语言的观点,结合实例代码讲解了高性能C++编程的技术。

第1章 跟踪范例 1

1.1 初步的跟踪实现 2

1.1.1 发生了什么问题 4

1.1.2 恢复计划 6

1.2 要点 9

引言 10

第2章 构造函数和析构函数 10

2.1 继承 11

2.2 合成 21

2.3 缓式构造 23

2.4 冗余构造 26

2.5 要点 30

第3章 虚函数 31

3.1 虚函数的构造 31

3.2 模板和继承 34

3.2.1 硬编码 35

3.2.2 继承 36

3.2.3 模板 37

3.3 要点 38

第4章 返回值优化 39

4.1 按值返回的构造 39

4.2 返回值优化 41

4.3 计算性构造函数 44

4.4 要点 45

第5章 临时对象 46

5.1 对象定义 46

5.2 类型不匹配 47

5.3 按值传递 50

5.4 按值返回 51

5.5 使用op=()消除临时对象 53

5.6 要点 54

6.1 版本0:全局函数new()和delete() 55

第6章 单线程内存池 55

6.2 版本1:专用Rational内存管理器 57

6.3 版本2:固定大小对象的内存池 61

6.4 版本3:单线程可变大小内存管理器 65

6.5 要点 72

第7章 多线程内存池 73

7.1 版本4:实现 73

7.2 版本5:快速锁定 76

7.3 要点 80

第8章 内联基础 81

8.1 什么是内联 81

8.2 方法调用代价 85

8.3 为何使用内联 89

8.4 内联详述 90

8.5 内联虚方法 91

8.6 通过内联获得性能 92

8.7 要点 93

第9章 内联——性能方面的考虑 94

9.1 调用间优化 94

9.2 为何不使用内联 99

9.3 开发阶段和编译时的内联考虑 102

9.4 基于配置的内联 102

9.5 内联规则 106

9.5.1 惟一 106

9.5.2 微小 106

9.6 要点 107

第10章 内联技巧 108

10.1 条件内联 108

10.2 选择性内联 109

10.3 递归内联 111

10.4 对静态局部变量进行内联 115

10.5 与体系结构有关的注意事项:多寄存器集 117

10.6 要点 118

11.1 渐近复杂度 119

第11章 标准模板库 119

11.2 插入 120

11.3 删除 127

11.4 遍历 130

11.5 查找 131

11.6 函数对象 133

11.7 比STL更好 135

11.8 要点 138

第12章 引用计数 139

12.1 实现细节 141

12.2 已存在类 153

12.3 并发引用计数 157

12.4 要点 161

第13章 代码优化 162

13.2 预先计算 164

13.1 缓存 164

13.3 降低灵活性 166

13.4 80-20规则:提高常用路径的速度 166

13.5 缓式计算 170

13.6 无用计算 171

13.7 系统体系结构 172

13.8 内存管理 174

13.9 库和系统调用 175

13.10 编译器优化 177

13.11 要点 178

第14章 设计优化 179

14.1 设计灵活性 179

14.2 缓存 183

14.2.1 Web服务器时间戳 183

14.2.2 数据扩展 183

14.2.3 公用代码陷阱 184

14.3 高效的数据结构 186

14.4 缓式计算 186

14.5 无用计算 190

14.6 失效代码 191

14.7 要点 192

第15章 可伸缩性 193

15.1 SMP体系结构 195

15.2 Amdahl法则 196

15.3 多线程和同步术语 198

15.4 把一个任务分解成多个子任务 199

15.5 缓存共享数据 199

15.6 无共享 202

15.7 部分共享 203

15.8 锁的粒度 205

15.10 Thundering Herd 208

15.9 伪共享 208

15.11 读/写锁 210

15.12 要点 210

第16章 系统体系结构相关性 212

16.1 内存层次 212

16.2 寄存器:内存之王 214

16.3 磁盘和内存结构 217

16.4 缓存影响 220

16.5 缓存颠簸 222

16.6 避免跳转 223

16.7 简单计算胜过小分支 224

16.8 线程影响 225

16.9 上下文切换 227

16.10 内核交叉 229

16.11 线程选择 230

16.12 要点 232

参考文献 233