一、C#字符串连接和StringBuilder字符串拼接性能测试
Environment.TickCount,距离系统启动时间为基准,对比代码执行时间。
/// <summary>
/// 实例测试,C#字符串链接和StringBuilder的性能
/// </summary>
static void StringTest()
{
// 获取系统启动后经过的毫秒数。
int start = Environment.TickCount;
/******使用字符串连接构建字符串******/
for (int i = 0; i < 200; i++)
{
string s = "";
for (int j = 0; j < 1000; j++)
{
s += "Outer index=";
s += i;
s += "Inner index=";
s += j;
s += " ";
}
}
int middle = Environment.TickCount;
Console.WriteLine("字符串拼接时间:{0}秒", (middle - start) / 1000);
/******使用StringBuilder构建字符串******/
for (int i = 0; i < 20; i++)
{
StringBuilder builder = new StringBuilder();
for (int j = 0; j < 1000; j++)
{
builder.Append("Outer index=");
builder.Append(i);
builder.Append("Inner index=");
builder.Append(j);
builder.Append(" ");
}
}
int end = Environment.TickCount;
Console.WriteLine("StringBuilder拼接时间:{0}毫秒,约等于{1}秒", (end - middle), (end - middle) / 1000);
}
结果对比
特别说明:
对于有大量字符串拼接操作或者说在大量循环操作中,需要拼接字符串的时候,就必须考虑性能问题。
解决方案之一就是使用StringBuilder类。
//
// 摘要:
// 表示可变字符字符串。此类不能被继承。
[ComVisible(true)]
[DefaultMember("Chars")]
public sealed class StringBuilder : ISerializable