您的位置:首页 > 编程语言 > C#

c#字符串连接性能测试

2010-11-29 09:42 393 查看
在C#中,“+”连接符和append()能实现的功能都差不多,但是性能差异非常明显。使用“+”连接符时,每次会生成一个新的字符串,但使用append()时不会。

 

在计算10万次每次加1个字符时如下:全程CPU负载100%,内存占用61%

 

输出结果

 

 

 

+开始时间:2010-11-29 09:38:20.195 结束时间:2010-11-29 09:39:21.227耗时共:1分钟1秒31毫秒

Append开始时间:2010-11-29 09:39:21.227 结束时间:2010-11-29 09:39:21.227耗时共:0分钟0秒0毫秒

 

 

 

以下为测试代码:

using System;
using System.Collections;
using System.Web;
using System.Web.UI.HtmlControls;
using System.Text;
public partial class test : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
int i = 0;
int count = 100000;

DateTime startTime = DateTime.Now;
string j = string.Empty;
for (i = 1; i <= count; i++)
{
j += "1";
}
DateTime endTime = DateTime.Now;
this.Response.Write( "+开始时间:" + startTime.ToString("yyyy-MM-dd HH:mm:ss.fff") + "  结束时间:" + endTime.ToString("yyyy-MM-dd HH:mm:ss.fff") + "耗时共:" + DateDiff(endTime, startTime) + "<br/>");

startTime = DateTime.Now;
StringBuilder sb = new StringBuilder();
for (i = 1; i <= count; i++)
{
sb.Append("1");
}
endTime = DateTime.Now;
this.Response.Write("Append开始时间:" + startTime.ToString("yyyy-MM-dd HH:mm:ss.fff") + "  结束时间:" + endTime.ToString("yyyy-MM-dd HH:mm:ss.fff") + "耗时共:" + DateDiff(endTime, startTime) + "<br/>");
}
private string DateDiff(DateTime DateTime1, DateTime DateTime2)
{
string dateDiff = null;
TimeSpan ts1 = new TimeSpan(DateTime1.Ticks);
TimeSpan ts2 = new TimeSpan(DateTime2.Ticks);
TimeSpan ts = ts1.Subtract(ts2).Duration();
//dateDiff = ts.Days.ToString() + "天"
//    + ts.Hours.ToString() + "小时"
dateDiff = ts.Minutes.ToString() + "分钟"
+ ts.Seconds.ToString() + "秒"
+ ts.Milliseconds.ToString() + "毫秒";
return dateDiff;
}
}
 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息