《编写高性能的.NET代码》[美]沃森【文字版_PDF电子书_推荐】
内容简介:
本书详细介绍了如何编写高性能的.NET程序,在zui大化托管代码性能的同时,还能保证.NET的特性优势。 本书循序渐进地深入.NET的各个部分,特别是底层的公共语言运行时(Common Language Runtime,CLR),了解CLR是如何完成内存管理、代码编译、并发处理等工作的。本书还详细介绍了.NET的架构,探讨了编程方式如何影响程序的整体性能,在全书中,还分享了发生在微软的一些趣闻轶事。本书的内容偏重于服务器程序,但几乎所有内容也同样适用于桌面端和移动端应用程序。 本书条理清楚,言简意赅,适合有一定.NET基础的读者和想要提高代码性能的C#程序员学习参考。
作者简介:
作者简介:
目 录:
目录
第1章性能评估及工具 1
1.1选择评估内容 1
1.2平均值还是百分位值 3
1.3评估工具 4
1.3.1Visual Studio 5
1.3.2性能计数器 7
1.3.3ETW事件 13
1.3.4PerfView 15
1.3.5CLR Profiler 18
1.3.6Windbg 20
1.3.7.NET IL分析器 24
1.3.8MeasureIt 25
1.3.9代码中的工具 25
1.3.10SysInternals工具 26
1.3.11数据库 26
1.3.12其他工具 27
1.3.13评估本身的开销 27
1.4小结 27
第2章垃圾回收 28
2.1基本运作方式 30
2.2配置参数 33
2.2.1工作站模式还是服务器模式 33
2.2.2后台垃圾回收 34
2.2.3低延迟模式
(Low Latency Mode) 35
2.3减少内存分配量 36
2.4首要规则 37
2.5缩短对象的生存期 37
2.6减少对象树的深度 38
2.7减少对象间的引用 38
2.8避免对象固定 38
2.9避免使用终结方法 39
2.10避免分配大对象 40
2.11避免缓冲区复制 41
2.12对长期存活对象和大型对象进行
池化 41
2.13减少LOH的碎片整理 45
2.14某些场合可以强制执行完全
回收 46
2.15必要时对LOH进行碎片
整理 47
2.16在垃圾回收之前获得通知 47
2.17用弱引用作为缓存 50
2.18评估和研究垃圾回收性能 51
2.18.1性能计数器 51
2.18.2ETW事件 52
2.18.3垃圾回收的耗时 53
2.18.4内存分配的发生时机 54
2.18.5查看已在LOH中分配内存的
对象 55
2.18.6查看内存堆中的全部对象 57
2.18.7为什么对象没有被回收 60
2.18.8哪些对象被固定着 61
2.18.9内存碎片的产生时机 63
2.18.10对象位于第几代内存堆中 67
2.18.11第0代内存堆中存活着哪些
对象 68
2.18.12谁在显式调用GC.Collect
方法 70
2.18.13进程中存在哪些弱引用 70
2.19小结 71
第3章JIT编译 72
3.1JIT编译的好处 73
3.2JIT编译的开销 73
3.3JIT编译器优化 75
3.4减少JIT编译时间和程序启动
时间 76
3.5利用Profile优化JIT编译 78
3.6使用NGEN的时机 78
3.6.1NGEN本机映像的优化 79
3.6.2本机代码生成 80
3.7JIT无法胜任的场合 80
3.8评估 81
3.8.1性能计数器 81
3.8.2ETW事件 82
3.8.3找出JIT耗时最长的方法和
模块 82
3.9小结 83
第4章异步编程 84
4.1使用Task 86
4.2并行循环 89
4.3避免阻塞 92
4.4在非阻塞式I/O中使用Task 92
4.4.1适应Task的异步编程模式 94
4.4.2使用高效I/O 96
4.5async和await 97
4.6编程结构上的注意事项 99
4.7正确使用Timer对象 100
4.8合理设置线程池的初始大小 101
4.9不要中止线程 102
4.10不要改变线程的优先级 102
4.11线程同步和锁 103
4.11.1真的需要操心性能吗 103
4.11.2我真的需要用到同步锁吗 104
4.11.3多种同步机制的选择 105
4.11.4内存模型 106
4.11.5必要时使用volatile 106
4.11.6使用Interlocked方法 108
4.11.7使用Monitor(锁) 110
4.11.8该在什么对象上加锁 112
4.11.9异步锁 112
4.11.10其他加锁机制 115
4.11.11可并发访问的集合类 116
4.11.12使用更大范围的锁 116
4.11.13替换整个集合 117
4.11.14将资源复制给每个线程 118
4.12评估 118
4.12.1性能计数器 118
4.12.2ETW事件 119
4.12.3查找争用情况最严重的锁 120
4.12.4查找线程在I/O的阻塞位置 120
4.12.5利用Visual Studio可视化展示
Task和线程 121
4.13小结 122
第5章编码和类设计的一般规则 123
5.1类和“结构”的对比 123
5.2重写“结构”的Equals和
GetHashCode方法 126
5.3虚方法和密封类 128
5.4接口的分发(Dispatch) 128
5.5避免装箱 129
5.6for和foreach的对比 131
5.7强制类型转换 133
5.8P/Invoke 134
5.9委托 136
5.10异常 137
5.11dynamic 138
5.12自行生成代码 141
5.13预处理 146
5.14评估 146
5.14.1ETW事件 146
5.14.2查找装箱指令 147
5.14.3第一时间发现“异常” 149
5.15小结 150
第6章使用.NET Framework 151
6.1全面了解所用API 151
6.2多个API殊途同归 152
6.3集合类 152
6.3.1泛型集合类 153
6.3.2可并发访问的集合类 154
6.3.3其他集合类 156
6.3.4创建自定义集合类型 156
6.4字符串 157
6.4.1字符串比较 157
6.4.2ToLower和ToUpper 158
6.4.3字符串拼接 158
6.4.4字符串格式化 158
6.4.5ToString 159
6.4.6避免字符串解析 159
6.5应避免使用正常情况下也会抛出
“异常”的API 159
6.6避免使用会在LOH分配内存的
API 159
6.7使用延迟初始化 160
6.8枚举的惊人开销 161
6.9对时间的跟踪记录 162
6.10正则表达式 164
6.11LINQ 164
6.12读取文件 165
6.13优化HTTP参数及网络
通讯 166
6.14反射 167
6.15评估 168
6.16性能计数器 168
6.17小结 169
第7章性能计数器 170
7.1使用已有的计数器 170
7.2创建自定义计数器 171
7.2.1Averages 172
7.2.2Instantaneous 173
7.2.3Deltas 173
7.2.4Percentages 173
7.3小结 174
第8章ETW事件 175
8.1定义事件 175
8.2在PerfView中使用自定义
事件 178
8.3创建自定义ETW事件
Listener 179
8.4获取EventSource的详细
信息 184
8.5自定义PerfView分析插件 186
8.6小结 189
第9章Windows Phone 190
9.1评估工具 190
9.2垃圾回收和内存 191
9.3JIT 191
9.4异步编程和内存模式 192
9.5其他问题 193
9.6小结 193
第10章代码安全性 194
10.1充分理解底层的操作系统、API
和硬件 194
10.2把API调用限制在一定范围的
代码内 194
10.3把性能要求很高、难度很大的
代码集中起来并加以抽象 199
10.4把非托管代码和不安全代码
隔离出来 200
10.5除非有证据证明,不然代码清晰
度比性能更重要 200
10.6小结 200
第11章建立追求性能的开发团队 201
11.1了解最影响性能的关键
区域 201
11.2有效的测试 201
11.3性能测试平台和自动化 202
11.4只认数据 203
11.5有效的代码复查 203
11.6 训练 204
11.7 小结 205
附录A尽快启动对应用程序的性能
讨论 206
定义指标 206
分析CPU占用情况 206
分析内存占用情况 206
分析JIT 207
分析异步执行性能 207
附录B大O表示法 209
常见算法及其复杂度 211
排序算法 211
图论算法 211
查找算法 212
特殊案例 212
附录C参考文献 213
参考书籍 213
相关人士及博客 213
《编写高性能的.NET代码》[美]沃森【文字版_PDF电子书_下载】大小:14.70MB已经过安全软件检测无毒,请您放心下载。浏览器不支持脚本!购买本书:当当图书商城 | | 淘宝购书
有需要联系v;hx-hx4
摘要:《编写高性能的.NET代码》是一本针对.NET开发者的书籍,由美国作者沃森编写。本书详细介绍了如何编写高性能的.NET代码,对于提升.NET应用程序的性能具有重要的指导意义。本文将从四个方面对《编写高性能的.NET代码》进行阐述,分别是代码优化、内存管理、并行编程和性能调优。
1、代码优化
代码优化是提高.NET应用程序性能的关键,本书从代码层面上进行了详细的讲解。首先介绍了代码的执行过程,包括JIT编译、垃圾回收等机制,然后通过实例讲解了常见的代码优化技巧,如减少垃圾回收、利用值类型等。此外,本书还介绍了一些工具和技术,如性能分析器和代码剖析器,帮助开发者发现和解决代码性能问题。
代码优化是.NET开发者必备的技能,阅读本书可以帮助开发者全面了解代码优化的原理和方法,提高应用程序的性能。
2、内存管理
内存管理是.NET应用程序性能优化的重要方面,本书对内存管理进行了详细的讲解。首先介绍了.NET的垃圾回收机制,包括分代回收、Finalizer等。然后讲解了如何减少垃圾回收的频率,如使用对象池、避免频繁的对象创建和销毁等。此外,本书还介绍了一些内存管理的工具和技术,如内存分析器和内存剖析器,帮助开发者发现和解决内存泄漏和内存溢出的问题。
内存管理是.NET应用程序性能优化的重要环节,阅读本书可以帮助开发者了解.NET的内存管理机制,掌握内存管理的技巧,提高应用程序的性能。
3、并行编程
并行编程是提高.NET应用程序性能的重要手段,本书对并行编程进行了详细的介绍。首先介绍了并行编程的基本概念和原理,然后通过实例讲解了如何使用并行编程框架和并行算法提高应用程序的性能。此外,本书还介绍了一些并行编程的工具和技术,如并行任务库和并行数据结构,帮助开发者更加方便地进行并行编程。
并行编程是.NET应用程序性能优化的重要手段,阅读本书可以帮助开发者了解并行编程的原理和方法,提高应用程序的性能。
4、性能调优
性能调优是.NET应用程序优化的最后一环,本书对性能调优进行了详细的讲解。首先介绍了性能调优的基本概念和方法,然后通过实例讲解了如何使用性能分析器和性能测试工具,找出应用程序的性能瓶颈,并进行优化。此外,本书还介绍了一些常见的性能优化技巧,如缓存、异步编程等。
性能调优是.NET开发者必备的技能,阅读本书可以帮助开发者掌握性能调优的方法,提高应用程序的性能。
总结:
《编写高性能的.NET代码》是一本针对.NET开发者的书籍,详细介绍了如何编写高性能的.NET代码。从代码优化、内存管理、并行编程和性能调优四个方面进行了详细的阐述,帮助开发者全面了解和掌握提高.NET应用程序性能的方法。阅读本书可以帮助开发者提升应用程序的性能,提高开发效率。
本文由nayona.cn整理
本文采摘于网络,不代表本站立场,转载联系作者并注明出处: https://sm.nayona.cn/xinnengyuan/258716.html