[翻译]【目录】编写高性能 .NET 代码
本篇是 Writing High-Performance .NET Code 的目录索引,翻译内容不定时更新,目录也会同步修改。
- 性能测量及工具
- 选择什么来衡量
- 平均数vs百分比
- 工具介绍
- Visual Studio
- 性能计数器
- ETW事件
- PerfView
- CLR Profiler
- Windbg
- Measurelt
- 内部测试代码
- SysInternals 工具集
- 数据库
- 其他工具
- 垃圾回收
- 基本操作
- 基本选项
- 减少分配率
- 最重要的规则
- 缩短对象的生命周期
- 降低对象的层次深度
- 减少对象之间的引用
- 避免钉住对象(Pinning)
- 避免使用终结器
- 避免大对象
- 避免复制缓冲区
- 将长生命周期对象和大对象池化
- 在某些情况下强制执行完整GC
- 减少大对象堆的碎片
- 按需压缩大对象堆
- 在GC前受到消息通知
- 使用弱引用缓存对象
- 测量和调查GC性能
- 性能计数器
- ETW 事件
- 需要记录多长时间的数据
- 对象分配在那里
- 那些对象呗分配在大对象堆
- 我的堆上有那些对象
- 为什么我的对象没有被垃圾回收
- 那些对象被钉住了
- 内存碎片出现在那里?
- 那些对象生存在0代
- 有谁显示调用了GC.Collect
- 我的进程里有那些弱引用
- JIT编译
- JIT编译的好处
- JIT编译的花费
- JIT编译的优化
- 减少JIT和启动的时间
- 分析并优化JIT过程
- 什么时候使用NGEN
- 优化NGEN映像文件
- 新特性:本地化代码生成
- 什么时候不能编译JIT
- 测量
- 性能计数器
- ETW事件
- Subtopic
- 异步编程
- 使用Tasks
- Parallel Loops
- 避免阻塞
- Async and Await
- 关于一个程序结构的说明
- 正确使用计时器
- 确保配置了正确的线程池大小
- 不要终止线程
- 不要修改线程优先级
- 测量
- 通用编码与类设计
- 类VS结构体
- 覆盖结构体的Equals和GetHashCode方法
- 虚函数和终结类
- 接口调度
- 避免装箱
- for vs. foreach
- 类型转换
- P/Invoke
- 委托
- 异常
- 动态对象
- 代码生成
- 预处理
- 测量
- 使用.NET框架
- 了解所有你所调用的API
- 一些API的思考
- 集合
- 字符串
- 避免API在正常情况下抛出异常
- 避免API在大对象堆里分配
- 使用延迟初始化
- 令人惊讶的Enum消耗
- 追踪时间
- 正则表达式
- LINQ
- 读取文件
- 优化HTTP设置于网络通讯
- 反射
- 测量
- 性能计数器
- 性能计数器的消耗
- 创建一个自定义性能计数器
- ETW 事件
- 定义一个事件
- 自定义事件在PerfView里的开销
- 创建一个自定义ETW事件监听器
- 获得事件源的详细信息
- 自定义PerfView分析扩展
- Windows Phone
- 工具
- 垃圾回收与内存
- JIT
- 异步编程与内存模型
- 其它的思考
- 代码安全
- 了解底层操作系统,api和硬件
- 在某些区域里限制你的api访问
- 集中和抽象性能敏感和困难的代码
- 隔离非托管或不安全代码
- 保持代码的清晰,知道有证明说有性能问题
- 构建一个具备性能意识的团队
- 了解性能相关的领域
- 有效测试
- 性能基础设施和自动化
- 只相信数字
- 有效的代码回顾
- 教育
[翻译]【目录】编写高性能 .NET 代码的更多相关文章
- 编写高性能Javascript代码的若干建议
多年来,Javascript一直在web应用开发中占据重要的地位,但是很多开发者往往忽视一些性能方面的知识,特别是随着计算机硬件的不断升级,开发者越发觉得Javascript性能优化的好不好对网页的执 ...
- [翻译] 编写高性能 .NET 代码--第五章 通用编码与对象设计 -- 类 vs 结构体
本章介绍了本书其它部分未涉及到的一些编码和设计原则.包含了一些.NET的应用场景,有些不会造成太大危害,有些则会造成明显的问题.剩下的则根据你的使用方法会产生不同的效果.如果要对本章节出现的原则做一个 ...
- [翻译]编写高性能 .NET 代码 第一章:性能测试与工具 -- 平均值 vs 百分比
<<返回目录 平均值 vs 百分比 在考虑要性能测试的目标值时,我们需要考虑用什么统计口径.大多数人都会首选平均值,但在大多数情况下,这个正确的,但你也应该适当的考虑百分数.但你有可用性的 ...
- [翻译]编写高性能 .NET 代码 第一章:工具介绍 -- Visual Studio
<<返回目录 Visual Studio vs虽然不是全宇宙唯一的IDE,但它是.net开发人员最常用的开发工具.它自带一个性能分析工具,你可以使用它来做开发,不同的vs版本在工具上会略有 ...
- [翻译]编写高性能 .NET 代码 第一章:工具介绍 -- Performance Counters(性能计数器)
<<返回目录 Performance Counters(性能计数器) 性能计数器是监视应用程序和系统性能的最简单的方法之一.它有几十个类别数百个计数器在,包括一些.net特有的计数器.要访 ...
- [翻译]编写高性能 .NET 代码 第二章:垃圾回收
返回目录 第二章:垃圾回收 垃圾回收是你开发工作中要了解的最重要的事情.它是造成性能问题里最显著的原因,但只要你保持持续的关注(代码审查,监控数据)就可以很快修复这些问题.我这里说的"显著的 ...
- [翻译] 编写高性能 .NET 代码--第二章 GC -- 减少分配率, 最重要的规则,缩短对象的生命周期,减少对象层次的深度,减少对象之间的引用,避免钉住对象(Pinning)
减少分配率 这个几乎不用解释,减少了内存的使用量,自然就减少GC回收时的压力,同时降低了内存碎片与CPU的使用量.你可以用一些方法来达到这一目的,但它可能会与其它设计相冲突. 你需要在设计对象时仔细检 ...
- [翻译]编写高性能 .NET 代码 第二章:垃圾回收 基本操作
返回目录 基本操作 垃圾回收的算法细节还在不断完善中,性能还会有进一步的提升.下文介绍的内容在不同的.NET版本里会略有不同,但大方向是不会有变动的. 在.net进程里会管理2个类型的内存堆:托管和非 ...
- [翻译] 编写高性能 .NET 代码--第二章 GC -- 配置选项
配置选项 在基于"less rope to hang yourself with"思想下,.NET 框架没有给开发提供很多太多的配置选项.但在大多数情况下,GC会跟你的硬件配置,及 ...
随机推荐
- eclipse代码编辑区字符串自动转义设置
在做接口测试时,有时接口请求参数非常多,如果用java相关方法去拼接参数,难度较大,并且非常浪费时间,那如何快速将整个请求参数拼接成一个字符串呢?为了解决这个问题,只要简单配置下eclipse设置即可 ...
- ASP.NET没有魔法——ASP.NET MVC 模型绑定
在My Blog中已经有了文章管理功能,可以发布和修改文章,但是对于文章内容来说,这里缺少最重要的排版功能,如果没有排版的博客很大程度上是无法阅读的,由于文章是通过浏览器查看的,所以文章的排版其实与网 ...
- 图表工具--- ECharts.js学习(一) 简单入门
ECharts.js学习(一) 在项目开发的时候,在前端的数据需要用图表的形式展示.网上搜索了一下,发现有几种统计图库.具体有哪几种可以看: 前端开发者常用的9个JavaScript图表库 EChar ...
- junit源码解析--捕获测试结果
OK,前面的博客我们整理了junit运行完了所有的测试用例,那么OK了,现在开始该收集测试结果了. 在这最后一步中,junit主要是玩一个类,TestResult.这里类中封装了几个参数,在初始化这个 ...
- linkin大话设计模式--模板方法模式
linkin大话设计模式--模板方法模式 准备一个抽象类,将部分逻辑以具体方法的形式实现,然后申明一些抽象方法来迫使子类实现剩余的逻辑.不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不 ...
- linkin大话设计模式--命令模式
linkin大话设计模式--命令模式 首先考虑一种应用情况,某个方法需要完成某一个功能,这个功能的大部分功能已经确定了,但是有可能少量的步骤没法确定,必须等到执行这个方法才可以确定. 也就是说,我们写 ...
- linkin大话面向对象--闭包和回调
先来理解2个概念:闭包和回调 什么是闭包? 闭包是一个可调用的对象,它记录了一些信息,这些信息来自于创建他的作用域.通过这个定义,可以看出内部类是面向对象的闭包,因为他不仅包含了外部类对象的信 ...
- 错误: 非法字符: '\ufeff'
单独设置出错的类的编码方式 改成普通的utf-8格式即可
- android软键盘的显示和隐藏
显示: InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE); imm.toggle ...
- Nagios在selinux开启的情况下使用
# chcon -R -t httpd_sys_content_t /usr/local/nagios/sbin/ # chcon -R -t httpd_sys_content_t /usr/loc ...