.Net性能优化

来源:互联网 发布:mac如何导入照片 编辑:程序博客网 时间:2024/06/14 20:00

性能条款

  • Item1 :尽可能以using来执行资源清理
    以using语句来执行实现了Dispose模式的对象,是较好的资源清理选择,简介优雅的代码实现,同时能够**自动执行**Dispose方法来销毁非托管资源。
    using (SqlConnection con = new SqlConnection(constr))
    {
    using (SqlCommand cmd = new SqlCommand(sql, con))
    {
    con.Open();
    cmd.ExecuteNonQuery();
    }
  • Item2 :推荐使用泛型集合来代替非泛型集合
    泛型实现了一种类型安全的算法重用,其最直接的应用正是在集合类中的性能与安全的良好体现(这种性能差别堆值类型的影响较大,因为引用类型不存在装箱和拆箱的问题)
    1. List<int32> list = new List<int32>();
      for(int32 i = 0;i<10000;i++)
      //使用泛型没有发生装箱
      list.Add(i);
    2. ArrayList al = new ArrayList();
      for(int32 j = 0;j<10000;i++)
      //没有使用泛型发生了装箱(装箱会带来频繁的垃圾回收和类型转化的安全检查)
      al.Add(j)
  • Item3 :初始化时最好为集合对象指定大小
    虽然例如ArrayList,Queue这些长度动态增加的集合类,可以无需指定其容量,集合本身能够根据需求自动增加集合大小,但是因为集合动态增加的过程是一个内存重新分配和集合元素复制的过程。所以在集合初始化时指定一个适当的容量是对性能的一定程度的优化
    ArrayList al = new ArrayList(2);
    al.Add("ONE")
    al.Add("TWO")
    //容量动态其实会自动增加,可以继续赋值
    al.Add("THREE")
  • Item4:合理使用System.String和System.Text.StringBuilder
    在字符串链接目标较少的情况下,应优先使用String类型,反之…
  • Item5 :几种推荐的字符串操作方法
    1. String.Compare(str1,str2)而不是str1==str2(调用的是String.Equals方法,实质是会调用一个EqualsHelper辅助方法来实施比较,内部处理相对复杂)
    2. 字符串判断为空的操作用str.Length==0
  • Item6 : 选择foreach而不是for来处理可枚举集合的循环结构
    1. foreach 能够迭代多维数组,能够自动检测数组的上下限
    2. foreach 能够自动适应不同的类型转化
    3. foreach 更加简洁,优雅,可读性更强
      ArrayList al = new ArrayList(3)
      al.Add(100);
      al.Add("Hello Word")
      al.Add(new char[]{'A','B','C'})
      foreach(object o in al)
      Console.WriteLine(o.ToString())
      for(Int32 i = 0;i<al.Count;i++)
      Console.WriteLine(al[i].ToString());
  • Item7:多线程处理应对系统设计(尚不理解
    多线程技术是轻松应对多任务处理的最强大的技术(在适应用户的响应的同时,能够完成相应的数据处理)
  • Item8: 捕获异常时,catch块中尽量指定具体的异常筛选器,多个catch块保证自上而下由特殊到一般
    catch(FileNotFoundException)
    catch(IOException)
    catch(Exception)
  • Item9:以is/as模式进行类型兼容性检查(避免不必要的异常抛出)
    is实现类型判断,as实现类型转换
  • Item10:用static readonly 来代替const(解决const可能引起的程序集引用不一致问题,带来更多的灵活性控制)
  • Item11;尽量避免不当的装箱和拆箱操作,选择别的替代方案(例如使用泛型集合代替非泛型集合,重写ToString方法来避免装箱)
  • Item12:以FxCop工具,检查代码。
0 0
原创粉丝点击