美文网首页.NET 编程中国C#
整理一些提高C#编程性能的技巧

整理一些提高C#编程性能的技巧

作者: 小明yz | 来源:发表于2017-06-16 22:18 被阅读354次

    1、使用StringBuilder代替使用string 连接符 "+"

    说明:String类对象是不可变的(只读),一旦创建该对象,就不能修改该对象的值。

    对象String对象的重新赋值,本质上是重新创建了一个String对象并将新的值赋值给该对象。

    如果字符串存在较多次的拼接时候,最后使用StringBuilder类,需要引用命名空间 System.Text。

    该类不是创建新的对象,而是通过Append、Insert、Remove等方法对字符串直接进行操作,最后通过

    ToString方法返回操作结果。从而避免创建大量对象,造成资源浪费、性能降低。

    例如:

    //不要这样写

    String str="bei";

    str+="jing";

    str+="huan";

    str+="ying";

    str+="ni";

    //推荐这样写

    StringBuilder str=new StringBuilder();

    str.Append("bei");

    str.Append("jing");

    str.Append("huan");

    str.Append("ying");

    str.Append("ni");

    2、用foreach 代替 for 循环

    如果是可以使用foreach的时候,尽量用foreach,而不是 for。前者的效率比后者要高很多。

    3、使用HashTable 代替其他字典集合类型(如 StringDictionary、NameValueCollection),存放少量数据的时候可以使用HashTable。

    4、避免使用ArrayList

    因为ArrayList使用的时候存在装箱、拆箱会造成性能的损失,可以用泛型来代替。

    5、如果是字符进行比较的时候可以采用String.Compare,它会忽略大小写进行比较,而不要使用UpperCase、Lowercase转换后进行比较。

    6、如果只是从xml对象中读取数据,可以用只读的XPathDocument代替XMLDocument,可以提高性能。

    7、C#捕获异常的时候,不要使用通用的System.Exception。可以根据程序逻辑考虑可能出现的异常进行控制。

    8、要避免在循环体内声明变量,如果可以的化,最好放在循环体外声明,在循环体内初始化。

    9、采用using和try/finaly来做资源清理

    10、不要使用异常(Exception)来控制程序的流程

    因为捕获异常对性能的损耗很大,最好不要用异常去控制程序的流程。

    11、使用值类型的ToString方法避免装箱操作。

    因为值类型到引用类型会造成性能的损耗,所以使用值类型的ToString方法可以避免装箱造成的性能损耗。

    12、避免滥用反射,反射也是比较浪费性能的操作

    当使用反射来调用类型或者触发方法,或者访问一个字段或者属性是,CLR需要做很多工作:校验参数、检查权限、

    所以非常耗时,因此这样的情况下要尽量避免反射的使用。

    欢迎关注我的公众号,定期推送文章:原文

    相关文章

      网友评论

      • 有心人问道:可以解释一下第9,10吗?
        小明yz:@有心人问道 看书吧这个是常用的写法
      • ae3df8ea2a74:8、要避免在循环体内声明变量,如果可以的化,最好放在循环体外声明,在循环体内初始化。
        查了些资料,有待商榷。
        小明yz:@TJohnson 避免多次创建对象

      本文标题:整理一些提高C#编程性能的技巧

      本文链接:https://www.haomeiwen.com/subject/fizmqxtx.html