读书笔记(备忘)-.NET性能优化

 好的软件产品:业务流程、用户体验、安全性和非常重要的性能。
1、非托管资源的清理推荐Dispose模式来代替Finalize方式。
2、选择正确的垃圾收集器:工作站GC和服务器GC。
3、在适当的情况下对对象实现弱引用。保证在胖对象在内存不足时GC可以回收。
 MyClass mc = new MyClass();
 //创建弱引用
 WeakReference wr = new  WeakReference(mc);
 //移除强引用
 mc = null;
4、尽可能以using来执行资源清理。
5、推荐使用泛型集合来代替非泛型集合。大量的装箱、拆箱操作会带来频繁的垃圾回收、安全检查都不同程度的影响着性能,这些弊端再泛型集合中荡然无存。
6、特定类型的Array性能优于ArrayList。后者添加值类型的时候会有装、拆箱操作,但它更容易操作和使用,选择存在权衡比较。
7、初始化时最好为集合对象指定大小。
8、字符串驻留机制,是CLR为String类型实现的特殊设计。
9、合理使用System.String和System.Text.StringBuilder。优先使用String,而在大量字符串连接操作的情况下优先考虑StringBuilder。
10、尽量在子类中重写ToString方法。有效控制输出结果并在一定程度上减少装箱操作的发生。
11、字符串比较通常做法是str1==str2,较好的实现为String.Compare(str1,str2);返回-1 或 0
12、for和foreach的选择。推荐选择foreach来处理可枚举集合的循环结构。
13、用多线程来处理多任务。
14、尽量减少抛出异常,禁止将异常处理放在循环内,应尽量使用逻辑流程控制来代替异常处理。
15、捕获异常时,catch块尽量指定具体的异常筛选器,多个catch块应该保证异常由特殊到一般的排列顺序。
16、struct和Class的性能比较,在特殊情况下以struct来实现对轻量数据的封装是较好的选择,struct是值类型分配在线程的堆栈上,有较好的性能表现。当然,绝大部分情况下,class都具有不可代替的地位。
17、以is/as模式进行类型兼容性检查。
18、使用const和static readonly的权衡。 在实际应用中推荐使用static readonly来代替const,以解决const可能引起的程序集引用不一致问题,还有带来较多的灵活性控制。
19、尽量避免不当的装箱、拆箱,选择合适的代替方案。
20、尽量使用一维零基数组。
21、用以FxCop工具,检查你的代码。可以帮助我们检查分析现存托管程序在设计、本地化、命名规范、性能和安全性几个方面是否规范。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值