zoukankan      html  css  js  c++  java
  • 必须知道的.net(性能条款)

    1. 以dispose的模式来代替finalize方式:非托管资源的清理主要有终止化操作和Dispose模式两种,其中Finalize方式存在执行时间不确定,运行顺序不确定,同时对垃圾回收的性能有极大的损伤。
    2. 选择合适的垃圾收集器:工作站GC和服务器GC:工作站GC主要应用于单处理器系统,而服务器收集器专为多处理器设计,默认情况下为工作站收集器。
    3. 适当的情况下对对象实现弱引用:弱引用是对象引用的一种中间态,实现了对象既可以通过GC回收内存,又可以被应用程序访问的机制。胖对象需要大量的内存来创建,弱引用机制保证了胖对象的内存不足时GC可以回收,而不影响内存使用,在没有被GC回收前又可以再次引用该对象,从而达到空间与时间的双重节约。eg:
    4. 尽可能以using来执行资源清理
    5. 推荐使用泛型集合来代替非泛型集合:以ArrayList为例:
    6. 始化时最好为集合对象指定大小:集合动态增加的过程是一个内存重新分配和集合元素复制的过程,对性能有一定影响。
    7. 特定类型的Array性能优于ArrayList:ArrayList只接受Object类型的元素,向ArrayList添加其他类型元素会发生装箱和拆箱,因此在性能上优于Array
    8. 字符串驻留机制,是CLR为String类型实现的特殊设计
    9. 合理使用System.String和System.Text.StringBuilder:在简单的字符串操作中使用String,在复杂的字符串操作中使用StringBuilder。
    10. 尽量在子类中重写ToString()
    11. 其他推荐的字符串操作:字符串比较用String.Compare(str1,str2);字符串判断是否为空用Str.Length==0判断
    12. for和foreach的选择:推荐选择Foreach来处理可枚举集合的循环结构
    13. 以多线程处理应对系统设计:线程池
    14. 尽可能少的抛出异常,禁止将异常处理放在循环中:eg:Console.WriteLine(obj==null?String.Empty:obj.ToString());
    15. 捕获异常时,尽量指定具体的异常筛选器
    16. struct和class性能比较:以struct来实现对轻量级数据的封装是较好的选择。因为struct是值类型,数据分配在线程的堆栈上,所以具有较好的性能表现
    17. 以is、as模式进行类型兼容性检查:以is实现类型判断。以as实现安全的类型转换
    18. const和static readonly的权衡:推荐以static readonly来代替const
    19. 尽量避免不当的装箱和拆箱
    20. 尽量使用一维零基数组
    21. 以FxCop工具检查代码的规范(性能等)

                         

  • 相关阅读:
    LINUX操作系统VIM的安装和配置
    Ubuntu 14.04 LTS中怎样安装fcitx中文输入法
    Ubuntu 速配指南:开启3D桌面特效
    在U盘上安装Windows 7的详细步骤
    设置ip地址、掩码、网关、DNS
    U盘安装电脑系统教程
    取消word中所有超链接
    dos命令批处理发送文字到剪贴板
    Word2007:如何在竖版(纵向)页面中间插入横版(横向)页面
    ubuntu12.04 alternate win7 双系统安装
  • 原文地址:https://www.cnblogs.com/luyujie/p/3152013.html
Copyright © 2011-2022 走看看