如何优化.NET的性能

1)避免使用ArrayList。
    因为任何对象添加到ArrayList都要封箱为System.Object类型,从ArrayList取出数据时,要拆箱回实际的类型。建议使用自定义的集合类型代替ArrayList。.net 2.0提供了一个新的类型,叫泛型,这是一个强类型,使用泛型集合就可以避免了封箱和拆箱的发生,提高了性能。
2)使用HashTale代替其他字典集合类型(如StringDictionary,NameValueCollection,HybridCollection),存放少量数据的时候可以使用HashTable.
3)为字符串容器声明常量,不要直接把字符封装在双引号" "里面。
      //避免
      //
      MyObject obj = new MyObject();
      obj.Status = "ACTIVE";
      //推荐
      const string C_STATUS = "ACTIVE";
      MyObject obj = new MyObject();
      obj.Status = C_STATUS;
4) 不要用UpperCase,Lowercase转换字符串进行比较,用String.Compare代替,它可以忽略大小写进行比较.
 
  例:

const string C_VALUE = "COMPARE";
      if (String.Compare(sVariable, C_VALUE, true) == 0)
      {
      Console.Write("SAME");
      }

5) 用StringBuilder代替使用字符串连接符 “+”,.
      //避免
      String sXML = "<parent>";
      sXML += "<child>";
      sXML += "Data";
      sXML += "</child>";
      sXML += "</parent>";
      //推荐
      StringBuilder sbXML = new StringBuilder();
      sbXML.Append("<parent>");
      sbXML.Append("<child>");
      sbXML.Append("Data");
      sbXML.Append("</child>");
      sbXML.Append("</parent>");
6) If you are only reading from the XML object, avoid using XMLDocumentt, instead use XPathDocument, which is readonly and so improves performance.
如果只是从XML对象读取数据,用只读的XPathDocument代替XMLDocument,可以提高性能
      //避免
      XmlDocument xmld = new XmlDocument();
      xmld.LoadXml(sXML);
      txtName.Text = xmld.SelectSingleNode("/packet/child").InnerText;
.
      //推荐
      XPathDocument xmldContext = new XPathDocument(new StringReader(oContext.Value));
      XPathNavigator xnav = xmldContext.CreateNavigator();
      XPathNodeIterator xpNodeIter = xnav.Select("packet/child");
      iCount = xpNodeIter.Count;
      xpNodeIter = xnav.SelectDescendants(XPathNodeType.Element, false);
      while(xpNodeIter.MoveNext())
      {
      sCurrValues += xpNodeIter.Current.Value+"~";
      }

7) 避免在循环体里声明变量,应该在循环体外声明变量,在循环体里初始化。
      //避免
      for(int i=0; i<10; i++)
      {
      SomeClass objSC = new SomeClass();
      .
      .
      .
      }
      //推荐
      SomeClass objSC = null;
      for(int i=0; i<10; i++)
      {
      objSC = new SomeClass();
     
      .
      .
      .
      }
8) 捕获指定的异常,不要使用通用的System.Exception.
      //避免
      try
      {
      <some logic>
      }
      catch(Exception exc)
      {
      <Error handling>
      }
     
      //推荐
      try
      {
      <some logic>
      }
      catch(System.NullReferenceException exc)
      {
      <Error handling>
      }
      catch(System.ArgumentOutOfRangeException exc)
      {
      <Error handling>
      }
      catch(System.InvalidCastException exc)
      {
      <Error handling>
      }
9) 使用Try...catch...finally时, 要在finally里释放占用的资源如连接,文件流等
不然在Catch到错误后占用的资源不能释放。       
        try
      {
        ...
      }
      catch
        {...}
        finally
        {
          conntion.close()
        }   
10) 避免使用递归调用和嵌套循环,使用他们会严重影响性能,在不得不用的时候才使用。
11) 使用适当的Caching策略来提高性能
好了 今天就写到这里,  以后有空再写。

时间: 2024-09-20 00:28:51

如何优化.NET的性能的相关文章

通过禁用NTbios来优化TMG解析性能

在TMG注册表里修改如下值来禁用NTbios,优化TMG解析性能 Path: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\NetBT Parameters Name: NodeType Type: REG_DWORD Value: 2 更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Servers/DNS/

谈优化无线网络性能

对于无线网络的速度总是不尽人意,那么我们怎么能改善我们现有的无线环境呢?怎样做才能达到优化无线网络性能的目的呢?在其间应该使用些什么呢?本文将为你解答这些问题. 如果你的Skype或者Second Life应用开始出现频繁断线的情况,或者当有人开始魔兽世界的游戏时你的iTunes传输流就变得拥塞,那么你应当考虑一下,如何在不必购买一台新设备的情况下改善这些问题.在过去几年里,大多数售出的无线路由器都具有QoS功能,但是你可能还是希望能够更新路由器的固件来解决问题. 就拿一台Linksys的路由器

Android 开发中利用异步来优化运行速度和性能

本文讲的是Android 开发中利用异步来优化运行速度和性能, 我们知道,在Android框架中提供了很多异步处理的工具类.然而,他们中大部分实现是通过提供单一的后台线程来处理任务队列的.如果我们需要更多的后台线程的时候该怎么办呢? 大家都知道Android的UI更新是在UI线程中进行的(也称之为主线程).所以如果我们在UI线程中编写耗时任务都可能会阻塞UI线程更新UI.为了避免这种情况我们可以使用 AsyncTask, IntentService和Threads.在之前我写的一篇文章介绍了An

优化服务器的性能方案设计

1.PHP+FTP远程上传文件至服务器 为了优化服务器的性能,现在主服务器上只放程序文件,用一台服务器专门放静态文件,像图片,游戏客户端文件等都放上面.通过URL来使用这上面的文件.. 为了解决这个问题,决定采用PHP通过FTP上传到文件服务器.当然你得有域名指向FTP才能访问你的图,使用FtpClient类可以轻松做到.用ftp需要传两次太慢了,ftp上传过程:先传到项目服务器再传到图片服务器.   2.其实比较实用的是做磁盘映射,你有两台服务器一台做web服务器架设iis/apche一台做图

【原创】构建高性能ASP.NET站点 第七章 如何解决内存的问题(前中篇)—托管资源优化—监测CLR性能

原文:[原创]构建高性能ASP.NET站点 第七章 如何解决内存的问题(前中篇)-托管资源优化-监测CLR性能 构建高性能ASP.NET站点 第七章 如何解决内存的问题(前中篇)-托管资源优化-监测CLR性能     前言:在上一篇文章中讲述了一些垃圾回收的一些知识,本篇就讲述如何来监测CLR是否导致了一些性能问题.    本篇的议题如下: 内存问题概述(前篇) 托管资源优化(前篇)          对象的生命周期(前篇)          对象的"代"(前篇)          大

10G以太网激光优化多模光纤的性能特征

爆炸性增长的信息传输需求和光通信技术的飞速发展正支持着通信网络向着更高速率更大容量的方向迅猛推进.由于Internet的使用,对数据传输的要求呈现出爆炸性的几何级数般的增长,因此对网络传输速度的要求也是日甚一日.在局域网(LAN)方面,虽然存在各种制式和协议,但有一点是相同的,即不停地提高网络的传输速度.以以太网为例,90年代以来,以太网技术的引入以及个人计算机和工作站的较高利用率推动着局域网的发展.当今,新一代多媒体.群件(Groupware).影像传输和数据库产品的信息量猛增使速率为10Mb

如何优化Windows服务器性能

优化Windows服务器磁盘性能 在一台服务器的使用上,磁盘往往占据着很重要的位置.服务器磁盘的配置和维护对整个服务器性能方面产生很大影响.实际上,优化服务器磁盘的方法只需要花费一点点时间.在这篇文章中,我将会分享一些提高你的服务器磁盘子系统效率的方法. 注意:几乎所有的服务器都被做了不相同的配置.也就是说,最适合您的组织的磁盘配置和优化技巧可能对另外一个组织的服务器是有害的.唯一的完全优化一台服务器磁盘的方法是去分析,在这台服务器上都运行了哪些应用,并且这些应用在服务器磁盘子系统中占用了多少工

JavaScript和CSS的优化提高网站性能

      在第一部分和第二部分中我们分别介绍了改善网站性能中页面内容和服务器的几条守则,除此之外,JavaScript和CSS也是我们页面中经常用到的内容,对它们的优化也提高网站性能的重要方面:CSS: 把样式表置于顶部 避免使用CSS表达式(Expression) 使用外部JavaScript和CSS 削减JavaScript和CSS 用<link>代替@import 避免使用滤镜 JavaScript 把脚本置于页面底部 使用外部JavaScript和CSS 削减JavaScript和C

优化ASP.NET性能的方法

asp.net|性能|优化     1. 数据库访问性能优化 数据库的连接和关闭 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源.ASP.NET中提供了连接池(Connection Pool)改善打开和关闭数据库对性能的影响.系统将用户的数据库连接放在连接池中,需要时取出,关闭时收回连接,等待下一次的连接请求. 连接池的大小是有限的,如果在连接池达到最大限度后仍要求创建连接,必然大大影响性能.因此,在建立数据库连接后只有

数据库优化实践:性能检测工具篇

诊断数据库性能问题就象医生诊断病人病情一样,既要结合自己积累的经验,又要依靠科学的诊断报 告,才能准确地判断问题的根源在哪里.前面三篇文章我们介绍了许多优化数据库性能的方法,固然掌握 优化技巧很重要,但诊断数据库性能问题是优化的前提,本文就介绍一下如何诊断数据库性能问题. 第八步:使用SQL事件探查器和性能监控工具有效地诊断性能问题 在SQL Server应用领域SQL事件探查器可能是最著名的性能故障排除工具,大多数情况下,当得到一个 性能问题报告后,一般首先启动它进行诊断. 你可能已经知道,S