string与StringBuilder的性能对比

本文通过实际测试比较了string与StringBuilder在处理大量字符串拼接时的性能差异。string对象不可变,每次操作都会生成新的对象,而StringBuilder则可以动态调整大小,更适合频繁的字符串操作。

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

首先,还是简单解释一下stringStringBuilder

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

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

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

StringBuilder测试代码

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测试代码

 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测试执行结果

 

一看这结果,大家就应该明白了吧... ...

还不明白你就out了... ...

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值