当前位置:编程学习 > C#/ASP.NET >>

string与StringBuilder的新能对比

关于string与StringBuilder的区别,这里就不做详细的说明了,毕竟网上一大堆这方面的文章。这里我就直接贴出一个新能测试的对比,大家一看就知道它们之间的区别。

首先,还是简单解释一下string、StringBuilder;

string对象是不可改变的。每次使用 System.String 类中的方法之一时,都会在内存中创建一个新的字符串对象,这个时候就需要在内存中为该新对象分配新的空间。在对字符串重复执行复制的时候(例如: string a = "1"; a+=1;),与创建新的 String 对象对比,系统开销会非常大。

StringBuilder 对象是动态对象,长度可变。当修改 StringBuilder 时,它首先会默认一个空间,当长度达到这个容量时,将自动分配新的空间且容量翻倍,所以它是一个可自动变法的对象。

废话就不说了,直接贴出相关性能测试代码:

StringBuilder测试代码

[csharp] 
protected void Button3_Click(object sender, EventArgs e) 
    { 
        long startData = DateTime.Now.Ticks; 
        StringBuilder sb = new StringBuilder(); 
        int count = int.Parse(TextBox2.Text); 
        for (int i = 0; i < count; i++) 
        { 
            sb.Append("测试写入日志" + i + "," + TextBox1.Text + "\r\t"); 
        } 
        new WriteLog().WriteLog_1("StringBuilder测试写入日志", sb.ToString()); 
        long endData = DateTime.Now.Ticks; 
        this.TextBox5.Text = TimeSpan.FromTicks((endData - startData)).TotalMilliseconds + ""; 
    } 
StringBuilder测试执行结果

 

 

string测试代码

[csharp]
protected void Button4_Click(object sender, EventArgs e) 
   { 
       long startData = DateTime.Now.Ticks; 
       string sb = ""; 
       int count = int.Parse(TextBox2.Text); 
       for (int i = 0; i < count; i++) 
       { 
           sb += "测试写入日志" + i + "," + TextBox1.Text + "\r\t"; 
       } 
       new WriteLog().WriteLog_1("String测试写入日志", sb); 
       long endData = DateTime.Now.Ticks; 
       this.TextBox5.Text = TimeSpan.FromTicks((endData - startData)).TotalMilliseconds + ""; 
   } 
string测试执行结果


作者:yang_5
 

补充:软件开发 , C# ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,