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工具检查代码的规范(性能等)

必须知道的.net(性能条款)的更多相关文章

  1. 你必须知道的10个提高Canvas性能技巧

    你还在抱怨自己写的canvas demo徘徊在10帧以下吗?你还在烦恼打开自己写的应用就听见CUP风扇转吗?你正在写一个javascript Canvas库吗?那么下面九点就是你必须知道的! 一.预渲 ...

  2. (转)【推荐】初级.NET程序员,你必须知道的EF知识和经验

    转自:http://www.cnblogs.com/zhaopei/p/5721789.html [推荐]初级.NET程序员,你必须知道的EF知识和经验   阅读目录   [本文已下咒.先顶后看,会涨 ...

  3. [你必须知道的.NET]第三十一回,深入.NET 4.0之,从“新”展望

    发布日期:2009.05.22 作者:Anytao © 2009 Anytao.com ,Anytao原创作品,转贴请注明作者和出处. /// <summary> /// 本文开始,将以& ...

  4. [你必须知道的.NET]第三十回:.NET十年(下)

    发布日期:2009.05.11 作者:Anytao © 2009 Anytao.com ,Anytao原创作品,转贴请注明作者和出处. /// <summary> /// 本文部分内容,已 ...

  5. 必须知道的ADO.NET 数据库连接池

    http://www.cnblogs.com/liuhaorain/archive/2012/02/19/2353110.html 题外话 通过前几章的学习,不知道大家对ADO.NET有一定的了解了没 ...

  6. 深入理解.net - 4.你必须知道的String

    为什么要单独写string,主要是它太常用了,同时又太特殊了,特殊到CLR对它的处理都和其它对象不一样.简直可以称为VIP用户啊.本文并不是一篇介绍如何使用string的文章,而是旨在阐述string ...

  7. [你必须知道的.NET]第二十三回:品味细节,深入.NET的类型构造器

    发布日期:2008.11.2 作者:Anytao © 2008 Anytao.com ,Anytao原创作品,转贴请注明作者和出处. 说在,开篇之前 今天Artech兄在<关于Type Init ...

  8. Webservice WCF WebApi 前端数据可视化 前端数据可视化 C# asp.net PhoneGap html5 C# Where 网站分布式开发简介 EntityFramework Core依赖注入上下文方式不同造成内存泄漏了解一下? SQL Server之深入理解STUFF 你必须知道的EntityFramework 6.x和EntityFramework Cor

    Webservice WCF WebApi   注明:改编加组合 在.net平台下,有大量的技术让你创建一个HTTP服务,像Web Service,WCF,现在又出了Web API.在.net平台下, ...

  9. C#刨根究底:《你必须知道的.NET》读书笔记系列

    一.此书到底何方神圣? <你必须知道的.NET>来自于微软MVP—王涛(网名:AnyTao,博客园大牛之一,其博客地址为:http://anytao.cnblogs.com/)的最新技术心 ...

随机推荐

  1. Linux Process Management && Process Scheduling Principle

    目录 . 引言 . 进程优先级 . 进程的生命周 . 进程表示 . 进程管理相关的系统调用 . 进程调度 . 完全公平调度类 . 实时调度类 . 调度器增强 . 小结 1. 引言 在多处理器系统中,可 ...

  2. JZOJ P1847:找01串

    传送门 DP预处理+贪心 首先设$f[i][j]$表示长度为$i$的01串中有不大于$j$个1,然后显然 $f[i][j]=\sum_{k=1} ^{j} C[i][k]$ $C[i][j]=C[i- ...

  3. ecshop 远程图片本地化

    define('IN_ECS', true); require(dirname(__FILE__) . '/includes/init.php'); $smarty->assign('siteD ...

  4. jQuery基础(1) -- jQuery 语法

    通过 jQuery,您可以选取(查询,query) HTML 元素,并对它们执行"操作"(actions).jQuery 语法jQuery 语法是通过选取 HTML 元素,并对选取 ...

  5. 运用java集合Collections对List进行max和min操作

    我想创建了一个List,里面有一堆的数,一个需求是去掉一个最大值,一个最小值,List有remove的方法,但是找到最大值和最小值的方法不在List里,而是Collections的静态方法.真心觉得还 ...

  6. JS定时器

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. JS控制图片显示的大小(图片等比例缩放)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. 跟我一起玩转Sencha Touch 移动 WebApp 开发(一)

    1.目录 移动框架简介,为什么选择Sencha Touch? 环境搭建 创建项目框架,框架文件简介 创建简单Tabpanel案例 自定义图标的方式 WebApp产品测试和发布 HTML5离线缓存 发布 ...

  9. ecshop 默认图处理

    function get_banner_path($img) { $img = empty($img) ? C('no_picture') : $img; return $img;}

  10. draw9的使用说明

    转载来自:http://isux.tencent.com/android-ui-9-png.html 在Android的设计过程中,为了适配不同的手机分辨率,图片大多需要拉伸或者压缩,这样就出现了可以 ...