如何最大限度提高.NET的性能

性能

优化 .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-10-19 10:02:11

如何最大限度提高.NET的性能的相关文章

如何最大限度提高.NET的性能 (续)

性能    昨天发了一篇如何最大限度提高.NET性能的文章,评论的人不少,在这里非常感谢大家的评论,其中有些是指出文章的一些错误的,在这里感谢那些耐心写评论的老大们,小弟受益不少.      昨天那篇主要是从写代码的一些细节上来提高速度,可能很些是难实际感受到性能的提高,但是作为一名程序员,不断提高自己代码的质量是不断追求的目标.      其实随着硬件的发展,现在硬件的速度已经远远满足大多数人的的需要了,甚至有些人提出算法在现在软件开发中越来越不起作用了.记得以前看过麻省的数据结构视频,讲课的

关于大小型项目如何最大限度提高WebAPi性能

前言 WebAPi作为接口请求的一种服务,当我们请求该服务时我们目标是需要快速获取该服务的数据响应,这种情况在大型项目中尤为常见,此时迫切需要提高WebAPi的响应机制,当然也少不了前端需要作出的努力,这里我们只讲述在大小型项目中如何利用后台逻辑尽可能最大限度提高WebAPi性能,我们从以下几个方面来进行阐述. 性能提升一:JSON序列化器(Jil) 在.NET里面默认的序列化器是JavaScriptSrializer,都懂的,性能实在是差,后来出现了Json.NET,以至于在目前创建项目时默认

设置DB2和AIX与条带技术匹配以提高I/O性能

条带化技术是一种广泛使用的 I/O 负载均衡技术,可以在不增加额外硬件投入的情况下极大的提高 I/O 性能.但是在使用了这种技术的环境中,只有对数据库和操作系统的 I/O 处理有良好的规划和设置,使其与条带化技术相匹配,才能使 I/O 的性能达到最好.本文针对这个主题,以 DB2 数据库和 AIX 操作系统为例,介绍了如何规划和设置好相关的内容. 下面我们分如下几个方面来介绍: 条带化技术介绍 在 DB2 中合理规划和设置条带有关参数 在 AIX 中合理规划和设置条带有关参数 总结 条带化技术介

使用智能优化器提高Oracle的性能极限

oracle|性能|优化  使用智能优化器提高Oracle的性能极限       消耗在准备新的SQL语句的时间是Oracle SQL语句执行时间的最重要的组成部分.但是通过理解Oracle内部产生执行计划的机制,你能够控制Oracle花费在评估连接顺序的时间数量,并且能在大体上提高查询性能.准备执行SQL语句       当SQL语句进入Oracle的库缓存后,在该语句准备执行之前,将执行下列步骤: 1)        语法检查:检查SQL语句拼写是否正确和词序. 2)        语义分析

提高DB2查询性能的常用方法

简介 随着DB2应用的逐渐增多,越来越多的数据库开发人员在项目开发过程中都会遇到查询过于复杂,导致性能难以接受的问题.本文将主要从一个数据库开发者的角度介绍几种常用的方法来提高 DB2 查询的性能,而并不讨论如何通过配置 DB2 的各项参数以及调整服务器环境等方式来提高整个数据库性能的方法.系统配置等工作属于 DBA 的工作范畴,在一般的项目开发中,这对于开发人员都是透明的.本文先对 DB2提供的几种用于提高查询性能的相关工具和命令进行介绍,然后根据笔者的工作经验介绍一些常用的技巧和方法来提高查

用智能优化限制提高Oracle数据库性能

Oracle SQL运行时间的最主要的组成部分是花在为执行准备新的SQL语句上的时间.不过,如果了解了可执行计划产生的内在机制,你就可以控制Oracle花费在评估表的连接顺序的时间,并在总体上提高查询的性能. 准备为执行提供的SQL语句 在一个SQL语句进入Oracle库的cache之后.而真正被执行之前,将会依次发生如下事件: 语法检查--检查该SQL语句的拼写和词序是否正确. 语义解析--Oracle根据数据词典(data dictionary)来验证所有的表格(table)和列(colum

提高大容量内存性能,这是你内存大最应该做的事。

现在很多人的内存都有8G.16G甚至32G之类的超大内存,这是我们最应该考虑的是提高大容量内存性能 ,也就是让你的内存能发挥最大的功效.而不是有着大内存且没感觉到比以前低内存快多少.发生这种事就是你电脑设置得不够好. 1 根据我所知道的,可以改3个地方,下面就跟着我一一来修改吧. 3个地方都是在注册表哦,所以我们要先进入注册表编辑器,运行输入:regedit就进入了. 2 第一个要改的是LargeSystemCache的值 LargeSystemCache默认值为4,也就是4M,这个值是系统缓存

使用虚拟化,能够提高服务器的性能吗?

问题描述 我现在有两台2U双路服务器,性能中等,CPU也支持虚拟化.我计划在这两台服务器上,安装多个vmware的虚拟机,并在虚拟机中安装操作系统和我的多个业务系统.业务系统中,有大量的网络通信,也有一部分数据需要写入到数据库中.我想问一下,相比在物理机中安装.运行我的业务系统,在虚拟机中安装运行业务系统,能够提高服务器的性能吗? 解决方案 解决方案二:不能但是能提高安全性和部署配置灵活性

10款Web工具最大限度提高生产力

企业生产力的面貌在过去五年中发生了巨大的变化.大多数我们曾经在工作中以来的客户端和客户端/服务器端应用已经一去不复返了.现在,业务速度是由网络来定义的.因此这种从本地安装客户端应用向基于Web应用的转移,你需要重新装备那些帮助用户完成工作的工具.因此,你需要考虑那些基于Web的生产力工具. 不管你信或者不信,这些工具中很多远比你一直在使用的工具更具成本效益.此外,它们还有更高的可靠性,你创建一个环境,在这个环境中员工可以有效率地工作.但是你应该考虑哪些工具?以下是可能适合你的商业模式的10款工具