展开全部

主编推荐语

本书条理清楚,言简意赅,适合有一定.NET基础的读者和想要提高代码性能的C#程序员学习参考。

内容简介

本书详细介绍了如何编写高性能的.NET程序,在zui大化托管代码性能的同时,还能保证.NET的特性优势。 本书循序渐进地深入.NET的各个部分,特别是底层的公共语言运行时(Common Language Runtime,CLR),了解CLR是如何完成内存管理、代码编译、并发处理等工作的。本书还详细介绍了.NET的架构,探讨了编程方式如何影响程序的整体性能,在全书中,还分享了发生在微软的一些趣闻轶事。本书的内容偏重于服务器程序,但几乎所有内容也同样适用于桌面端和移动端应用程序。

目录

  • 版权信息
  • 内容提要
  • 作者简介
  • 译者简介
  • 技术编辑简介
  • 前言
  • 致谢
  • 第1章性能评估及工具
  • 1.1 选择评估内容
  • 1.2 平均值还是百分位值
  • 1.3 评估工具
  • 1.3.1 Visual Studio国
  • 1.3.2 性能计数器
  • 1.3.3 ETW事件
  • 1.3.4 PerfView国
  • 1.3.5 CLR Profiler国
  • 1.3.6 Windbg国
  • 1.3.7 .NET IL分析器
  • 1.3.8 MeasureIt国
  • 1.3.9 代码中的工具
  • 1.3.10 SysInternals工具
  • 1.3.11 数据库
  • 1.3.12 其他工具
  • 1.3.13 评估本身的开销
  • 1.4 小结
  • 第2章垃圾回收
  • 2.1 基本运作方式
  • 2.2 配置参数
  • 2.2.1 工作站模式还是服务器模式
  • 2.2.2 后台垃圾回收
  • 2.2.3 低延迟模式(Low Latency Mode)
  • 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.18.1 性能计数器
  • 2.18.2 ETW事件
  • 2.18.3 垃圾回收的耗时
  • 2.18.4 内存分配的发生时机
  • 2.18.5 查看已在LOH中分配内存的对象
  • 2.18.6 查看内存堆中的全部对象
  • 2.18.7 为什么对象没有被回收
  • 2.18.8 哪些对象被固定着
  • 2.18.9 内存碎片的产生时机
  • 2.18.10 对象位于第几代内存堆中
  • 2.18.11 第0代内存堆中存活着哪些对象
  • 2.18.12 谁在显式调用GC.Collect方法
  • 2.18.13 进程中存在哪些弱引用
  • 2.19 小结
  • 第3章JIT编译
  • 3.1 JIT编译的好处
  • 3.2 JIT编译的开销
  • 3.3 JIT编译器优化
  • 3.4 减少JIT编译时间和程序启动时间
  • 3.5 利用Profile优化JIT编译
  • 3.6 使用NGEN的时机
  • 3.6.1 NGEN本机映像的优化
  • 3.6.2 本机代码生成
  • 3.7 JIT无法胜任的场合
  • 3.8 评估
  • 3.8.1 性能计数器
  • 3.8.2 ETW事件
  • 3.8.3 找出JIT耗时最长的方法和模块
  • 3.9 小结
  • 第4章异步编程
  • 4.1 使用Task
  • 4.2 并行循环
  • 4.3 避免阻塞
  • 4.4 在非阻塞式I/O中使用Task
  • 4.4.1 适应Task的异步编程模式
  • 4.4.2 使用高效I/O
  • 4.5 async和await
  • 4.6 编程结构上的注意事项
  • 4.7 正确使用Timer对象
  • 4.8 合理设置线程池的初始大小
  • 4.9 不要中止线程
  • 4.10 不要改变线程的优先级
  • 4.11 线程同步和锁
  • 4.11.1 真的需要操心性能吗
  • 4.11.2 我真的需要用到同步锁吗
  • 4.11.3 多种同步机制的选择
  • 4.11.4 内存模型
  • 4.11.5 必要时使用volatile
  • 4.11.6 使用Interlocked方法
  • 4.11.7 使用Monitor(锁)
  • 4.11.8 该在什么对象上加锁
  • 4.11.9 异步锁
  • 4.11.10 其他加锁机制
  • 4.11.11 可并发访问的集合类
  • 4.11.12 使用更大范围的锁
  • 4.11.13 替换整个集合
  • 4.11.14 将资源复制给每个线程
  • 4.12 评估
  • 4.12.1 性能计数器
  • 4.12.2 ETW事件
  • 4.12.3 查找争用情况最严重的锁
  • 4.12.4 查找线程在I/O的阻塞位置
  • 4.12.5 利用Visual Studio可视化展示Task和线程
  • 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.14.1 ETW事件
  • 5.14.2 查找装箱指令
  • 5.14.3 第一时间发现“异常”
  • 5.15 小结
  • 第6章使用.NET Framework
  • 6.1 全面了解所用API
  • 6.2 多个API殊途同归
  • 6.3 集合类
  • 6.3.1 泛型集合类
  • 6.3.2 可并发访问的集合类
  • 6.3.3 其他集合类
  • 6.3.4 创建自定义集合类型
  • 6.4 字符串
  • 6.4.1 字符串比较
  • 6.4.2 ToLower和ToUpper
  • 6.4.3 字符串拼接
  • 6.4.4 字符串格式化
  • 6.4.5 ToString国
  • 6.4.6 避免字符串解析
  • 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.2.1 Averages国
  • 7.2.2 Instantaneous国
  • 7.2.3 Deltas国
  • 7.2.4 Percentages国
  • 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参考文献
  • 参考书籍
  • 相关人士及博客
展开全部

评分及书评

评分不足
2个评分
  • 用户头像
    给这本书评了
    4.0
    总体来说不错

    作者知识渊博,收获不小,但性能参数查看主要是讲 windows 平台(.net framework)下,没有.net core 和容器相关内容,这大概跟此书写作时间较早有关吧。

      转发
      评论

    出版方

    人民邮电出版社

    人民邮电出版社是工业和信息化部主管的大型专业出版社,成立于1953年10月1日。人民邮电出版社坚持“立足信息产业、面向现代社会、传播科学知识、服务科教兴国”,致力于通信、计算机、电子技术、教材、少儿、经管、摄影、集邮、旅游、心理学等领域的专业图书出版。