[翻译]【目录】编写高性能 .NET 代码

本篇是 Writing High-Performance .NET Code 的目录索引,翻译内容不定时更新,目录也会同步修改。

  1. 性能测量及工具
    • 选择什么来衡量
    • 平均数vs百分比
    • 工具介绍
      • Visual Studio
      • 性能计数器
      • ETW事件
      • PerfView
      • CLR Profiler
      • Windbg
      • Measurelt
      • 内部测试代码
      • SysInternals 工具集
      • 数据库
      • 其他工具
  2. 垃圾回收
    • 基本操作
    • 基本选项
      • 工作站与服务器
      • 后台GC
      • 低延迟模式
    • 减少分配率
    • 最重要的规则
    • 缩短对象的生命周期
    • 降低对象的层次深度
    • 减少对象之间的引用
    • 避免钉住对象(Pinning)
    • 避免使用终结器
    • 避免大对象
    • 避免复制缓冲区
    • 将长生命周期对象和大对象池化
    • 在某些情况下强制执行完整GC
    • 减少大对象堆的碎片
    • 按需压缩大对象堆
    • 在GC前受到消息通知
    • 使用弱引用缓存对象
    • 测量和调查GC性能
      • 性能计数器
      • ETW 事件
      • 需要记录多长时间的数据
      • 对象分配在那里
      • 那些对象呗分配在大对象堆
      • 我的堆上有那些对象
      • 为什么我的对象没有被垃圾回收
      • 那些对象被钉住了
      • 内存碎片出现在那里?
      • 那些对象生存在0代
      • 有谁显示调用了GC.Collect
      • 我的进程里有那些弱引用
  3. JIT编译
    • JIT编译的好处
    • JIT编译的花费
    • JIT编译的优化
    • 减少JIT和启动的时间
    • 分析并优化JIT过程
    • 什么时候使用NGEN
    • 优化NGEN映像文件
    • 新特性:本地化代码生成
    • 什么时候不能编译JIT
    • 测量
      • 性能计数器
      • ETW事件
      • Subtopic
  4. 异步编程
    • 使用Tasks
    • Parallel Loops
    • 避免阻塞
    • Async and Await
    • 关于一个程序结构的说明
    • 正确使用计时器
    • 确保配置了正确的线程池大小
    • 不要终止线程
    • 不要修改线程优先级
    • 测量
  5. 通用编码与类设计
    • 类VS结构体
    • 覆盖结构体的Equals和GetHashCode方法
    • 虚函数和终结类
    • 接口调度
    • 避免装箱
    • for vs. foreach
    • 类型转换
    • P/Invoke
    • 委托
    • 异常
    • 动态对象
    • 代码生成
    • 预处理
    • 测量
  6. 使用.NET框架
    • 了解所有你所调用的API
    • 一些API的思考
    • 集合
    • 字符串
    • 避免API在正常情况下抛出异常
    • 避免API在大对象堆里分配
    • 使用延迟初始化
    • 令人惊讶的Enum消耗
    • 追踪时间
    • 正则表达式
    • LINQ
    • 读取文件
    • 优化HTTP设置于网络通讯
    • 反射
    • 测量
  7. 性能计数器
    • 性能计数器的消耗
    • 创建一个自定义性能计数器
  8. ETW 事件
    • 定义一个事件
    • 自定义事件在PerfView里的开销
    • 创建一个自定义ETW事件监听器
    • 获得事件源的详细信息
    • 自定义PerfView分析扩展
  9. Windows Phone
    • 工具
    • 垃圾回收与内存
    • JIT
    • 异步编程与内存模型
    • 其它的思考
  10. 代码安全
    • 了解底层操作系统,api和硬件
    • 在某些区域里限制你的api访问
    • 集中和抽象性能敏感和困难的代码
    • 隔离非托管或不安全代码
    • 保持代码的清晰,知道有证明说有性能问题
  11. 构建一个具备性能意识的团队
    • 了解性能相关的领域
    • 有效测试
    • 性能基础设施和自动化
    • 只相信数字
    • 有效的代码回顾
    • 教育

你可能感兴趣的:([翻译]【目录】编写高性能 .NET 代码)