想让自己的.NET代码获得zui佳的性能吗?本书将揭CLR的神秘面纱,不仅教你如何编写性能优异的代码,还能让你“知其所以然”。作者参与设计并搭建的系统是世界上zui大型的高性能.NET系统之一,他在本书中融了很多的经验教训。 本书不仅讲解了CLR的工作机制,还详细介绍了当前获得zui佳性能的新方法,涉及.NET环境下的极致优化、对CLR功能的深剖析、免费的工具和教程推荐、颇有价值的案例轶事、评测并提升性能的具体步骤。
售 价:¥
纸质售价:¥43.90购买纸书
温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印
为你推荐
内容提要
作者简介
译者简介
技术编辑简介
前言
致谢
第1章 性能评估及工具
1.1 选择评估内容
1.2 平均值还是百分位值
1.3 评估工具
1.4 小结
第2章 垃圾回收
2.1 基本运作方式
2.2 配置参数
2.3 减少内存分配量
2.4 首要规则
2.5 缩短对象的生存期
2.6 减少对象树的深度
2.7 减少对象间的引用
2.8 避免对象固定
2.9 避免使用终结方法
2.10 避免分配大对象
2.11 避免缓冲区复制
2.12 对长期存活对象和大型对象进行池化
2.13 减少LOH的碎片整理
2.14 某些场合可以强制执行完全回收
2.15 必要时对LOH进行碎片整理
2.16 在垃圾回收之前获得通知
2.17 用弱引用作为缓存
2.18 评估和研究垃圾回收性能
2.19 小结
第3章 JIT编译
3.1 JIT编译的好处
3.2 JIT编译的开销
3.3 JIT编译器优化
3.4 减少JIT编译时间和程序启动时间
3.5 利用Profile优化JIT编译
3.6 使用NGEN的时机
3.7 JIT无法胜任的场合
3.8 评估
3.9 小结
第4章 异步编程
4.1 使用Task
4.2 并行循环
4.3 避免阻塞
4.4 在非阻塞式I/O中使用Task
4.5 async和await
4.6 编程结构上的注意事项
4.7 正确使用Timer对象
4.8 合理设置线程池的初始大小
4.9 不要中止线程
4.10 不要改变线程的优先级
4.11 线程同步和锁
4.12 评估
4.13 小结
第5章 编码和类设计的一般规则
5.1 类和“结构”的对比
5.2 重写“结构”的Equals和GetHashCode方法
5.3 虚方法和密封类
5.4 接口的分发(Dispatch)
5.5 避免装箱
5.6 for和foreach的对比
5.7 强制类型转换
5.8 P/Invoke
5.9 委托
5.10 异常
5.11 dynamic
5.12 自行生成代码
5.13 预处理
5.14 评估
5.15 小结
第6章 使用.NET Framework
6.1 全面了解所用API
6.2 多个API殊途同归
6.3 集合类
6.4 字符串
6.5 应避免使用正常情况下也会抛出“异常”的API
6.6 避免使用会在LOH分配内存的API
6.7 使用延迟初始化
6.8 枚举的惊人开销
6.9 对时间的跟踪记录
6.10 正则表达式
6.11 LINQ
6.12 读取文件
6.13 优化HTTP参数及网络通信
6.14 反射
6.15 评估
6.16 性能计数器
6.17 小结
第7章 性能计数器
7.1 使用已有的计数器
7.2 创建自定义计数器
7.3 小结
第8章 ETW事件
8.1 定义事件
8.2 在PerfView中使用自定义事件
8.3 创建自定义ETW事件Listener
8.4 获取EventSource的详细信息
8.5 自定义PerfView分析插件
8.6 小结
第9章 Windows Phone
9.1 评估工具
9.2 垃圾回收和内存
9.3 JIT
9.4 异步编程和内存模式
9.5 其他问题
9.6 小结
第10章 代码安全性
10.1 充分理解底层的操作系统、API和硬件
10.2 把API调用限制在一定范围的代码内
10.3 把性能要求很高、难度很大的代码集中起来并加以抽象
10.4 把非托管代码和不安全代码隔离出来
10.5 除非有证据证明,不然代码清晰度比性能更重要
10.6 小结
第11章 建立追求性能的开发团队
11.1 了解最影响性能的关键区域
11.2 有效的测试
11.3 性能测试平台和自动化
11.4 只认数据
11.5 有效的代码复查
11.6 训练
11.7 小结
附录A 尽快启动对应用程序的性能讨论
定义指标
分析CPU占用情况
分析内存占用情况
分析JIT
分析异步执行性能
附录B 大O表示法
常见算法及其复杂度
附录C 参考文献
参考书籍
相关人士及博客
买过这本书的人还买过
读了这本书的人还在读
同类图书排行榜