日期:2014-05-17  浏览次数:20984 次

C# 三种常用的拼接字符串性能比
本帖最后由 lwjeoi1 于 2013-03-28 06:03:11 编辑
string str1="";
string str2="";
StringBuilder str3=new StringBuilder("");

分别是str1+""  和 str2.ToString() 和  str3.Append("");

for (int i = 0; i < 9999999; i++)
{
      str1 = str1 + "";
      //str3 = str2.ToString();
      // str3.Append("");
}

+"" 结果
{

第1次0小时 0分 0 秒46 毫秒
第2次0小时 0分 0 秒62 毫秒
第3次0小时 0分 0 秒46 毫秒
第4次0小时 0分 0 秒62 毫秒
第5次0小时 0分 0 秒62 毫秒
第6次0小时 0分 0 秒46 毫秒
第7次0小时 0分 0 秒62 毫秒
第8次0小时 0分 0 秒46 毫秒
第9次0小时 0分 0 秒62 毫秒
第10次0小时 0分 0 秒46 毫秒
}
.ToString() 结果
{

 第1次0小时 0分 0 秒62 毫秒
 第2次0小时 0分 0 秒62 毫秒
 第3次0小时 0分 0 秒78 毫秒
 第4次0小时 0分 0 秒62 毫秒
 第5次0小时 0分 0 秒62 毫秒
 第6次0小时 0分 0 秒62 毫秒
 第7次0小时 0分 0 秒62 毫秒
 第8次0小时 0分 0 秒62 毫秒
 第9次0小时 0分 0 秒62 毫秒
 第10次0小时 0分 0 秒78 毫秒
}

StringBuilder 结果
{

第1次0小时 0分 0 秒265 毫秒
第2次0小时 0分 0 秒234 毫秒
第3次0小时 0分 0 秒234 毫秒
第4次0小时 0分 0 秒234 毫秒
第5次0小时 0分 0 秒234 毫秒
第6次0小时 0分 0 秒234 毫秒
第7次0小时 0分 0 秒234 毫秒
第8次0小时 0分 0 秒218 毫秒
第9次0小时 0分 0 秒234 毫秒
第10次0小时 0分 0 秒234 毫秒
}

还有问题不知这一个。
当我把遍历的i 加多一位数 99999999 居然 StringBuilder 被卡死了
以前写代码都是在百度上看看,谁的性能好就用谁,今晚一试,阿弥陀佛,
万能的真主,我一直相信的 StringBuilder 性能怎么那么差啊

------解决方案--------------------
拼接字符串StringBuilder 性能要比+高啊
你拼接一个非空字符串试试
------解决方案--------------------
我只能说LZ不会用StringBuilder
------解决方案--------------------
我觉得是不是每种用法在不同的情况下就有不同的性能,不能绝对的说某一种方法好或者不好,要看使用者的使用方法吧
------解决方案--------------------
空字符串,+运算会被优化。