1.1 本书主要内容 1
目录 1
A.2 实现基准测试工具 23 1
第1章 简介 1
1.2 解决具体的性能问题 2
1.3.1 性能优先级 3
1.3 性能和开发过程 3
1.3.2 测试环境和安全惯例 5
1.3.3 开发人员的职责 7
1.4 本章小结 7
第2章 考察性能 8
2.1 性能考察模式 8
2.2 白盒考察 10
2.2.1 反汇编器和反编译器 10
2.2.2 MSIL反汇编器 11
2.2.4 Rotor 13
2.2.3 反编译器 13
2.2.5 x86反汇编 14
2.2.6 效能评测器和系统工具:灰盒考察 15
2.3 使用基准测试工具进行黑盒考察 16
2.4 本章小结 21
第3章 类型的设计与实现 22
3.1 引用类型和值类型 22
3.2 对象的分配和填充 23
3.2.1 类构造函数 24
3.2.2 静态构造函数 25
3.2.3 静态构造函数的调用时问 25
3.2.4 规范实例 26
3.2.5 析构函数 27
3.3 类封装 28
3.4 实现接口 31
3.5 用户定义类型转换 32
3.6 方法修饰符 33
3.7 重写Equals方法 34
3.8 实现GetHashCode方法 37
3.9 装箱和拆箱 39
3.10 本章小结 40
第4章 字符串、文本和正则表达式 41
4.1 字符串的比较 42
4.2 字符串的格式化 45
4.3 枚举 47
4.4 空字符串 47
4.5 保留池 48
4.6 System.Text.StringBuilder 49
4.7 字符串反转 50
4.8 正则表达式 52
4.9 本章小结 55
5.1 System.Array 56
第5章 集合 56
5.1.1 矩形数组与交错数组 57
5.1.2 数组初始化 58
5.1.3 数组同步 58
5.1.4 非安全数组访问 59
5.2 System.Collections 61
5.3 枚举 65
5.3.1 循环终止 67
5.3.2 循环不变量 68
5.4 集合同步 68
5.5 散列码与IHashCodeProvider接口 70
5.6 堆栈分配 74
5.7 本章小结 75
第6章 编程语言的详细说明 76
6.1 Visual Basic.NET 78
6.1.2 错误处理 79
6.1.1 字符串 79
6.1.3 布尔逻辑 81
6.1.4 数组和集合 82
6.1.5 后期绑定 83
6.1.6 选参数 84
6.1.7 低级别的执行控制 84
6.2 托管C++ 85
6.3 C 87
6.4 J 88
6.5 本章小结 89
第7章 垃圾回收与对象生存期管理 91
7.1 CLR垃圾回收器 91
7.2 非托管资源、清除以及终止化 94
7.2.1 终止化的开销 96
7.2.2 恰当使用垃圾回收进行资源清理 97
7.3 优化内存的使用 100
7.3.1 弱引用 102
7.3.2 对象循环利用和弱引用 102
7.4 固定 104
7.5 控制进程的内存使用量 106
7.7 本章小结 108
7.6 内存监视工具 108
第8章 异常 110
8.1 异常和异常处理 111
8.2 受保护代码块处理程序的效率 111
8.3 执行中断 112
8.4 受保护代码块 113
8.5 异常的重新抛出 114
8.6 恰当编写代码避免异常 116
8.7 异常的抛出 116
8.8 异常的监控 118
8.9 本章小结 118
9.1 安全性、应用程序设计和性能 119
第9章 安全性 119
9.2 公共语言运行库安全模型 120
9.2.1 加载过程中有效性和合法性验证 121
9.2.2 程序集 122
9.2.3 堆栈遍历和权限要求 123
9.3 密码术和加密 126
9.4 安全性能监视 128
9.5 本章小结 128
第10章 线程 129
10.1 线程同步 129
10.1.1 实现线程安全的代码 131
10.1.2 同步原语 133
10.1.3 线程调度 134
10.1.4 Thread.Sleep与Thread.SpinWait 138
10.1.5 资源争用和线程锁定 139
10.2 ReaderWriterLock 139
10.3 线程挂起 141
10.4 线程池 142
10.5 监视线程 144
10.6 本章小结 146
第11章 IO和序列化 147
11.1 IO性能背景 147
11.1.1 System.IO命名空间 148
11.1.2 读写磁盘 150
1 1.1.3 System.IO.FileStream 151
11.1.4 System.IO.BufferedStream类型 152
11.2 稀疏、压缩和内存映射文件 153
11.3 序列化 156
11.3.1 自定义序列化的优化技术 158
11.3.2 格式器的选择 159
11.4 本章小结 160
第12章 远程处理技术 161
12.1 跨应用程序域移动数据 161
12.2 Remoting信道选择 162
12.3 对象激活 165
12.4 调用方法 167
12.5 IIS寄宿 169
12.6 接收链 170
12.6.1 实现信道接收器 171
12.6.2 集合、等值性和序列化 173
12.6.3 使用信道接收器 174
12.7 监测Remoting 175
12.8 本章小结 176
第13章 NET Framework与非托管代码的互操作性 177
13.1 P/Invoke调用 177
13.1.1 编组数据到托管类型 180
13.1.2 字符集 182
13.1.3 非托管DLL的加载和卸载 183
13.1.4 安全属性 183
13.2 COM 184
13.2.2 避免COM生成的异常 187
13.2.1 COM错误的转化 187
13.3 托管C++ 189
13.4 监测交互操作 191
13.5 本章小结 192
第14章 公共语言运行库 193
14.1 进程初始化 193
14.2 加载行为 194
14.2.1 重定位 195
14.2.2 强命名程序集 197
14.2.3 多模块程序集 198
14.2.4 加载器优化 200
14.2.5 卸载程序集 201
14.2.6 即时编译 202
14.3 方法和属性的内联 204
14.4 自定义属性 204
14.5 管理CLR 205
14.6 checked算术代码 208
14.7 Decimal类型 209
14.8 Debug版本和Release版本 209
14.9 托管应用程序的内存使用 210
14.10 反射 211
14.11 本章小结 212
15.1 任务管理器 214
第15章 解决性能问题 214
15.2 代码评测器 217
15.3 系统监视器 219
15.4 内存评测器 222
15.5 源代码底层 224
15.6 第三方工具 225
15.7 代码规范 226
15.8 PSS 226
15.9 企业级工具 227
15.9.1 分布式评测器 227
15.9.2 Visual Studio Analyzer 227
15.10 本章小结 228
15.9.3 负载生成工具 228
附录A NET基准测试工具 229
A.1 性能的比较 229
A.2.1 函数调用 231
A.2.2 函数顺序 233
A.2.3 安装、清除以及摒弃测试结果 234
A.2.4 委托设计 235
A.2.5 测试执行 237
A.2.6 结果分析和表示 238
A.2.7 测试工具的体系结构 240
A.3 小结 242