String 对象是不可改变的。每次使用 System.String 类中的方法之一或进行运算时(如赋值、拼接等)时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。而 StringBuilder 则不会。在需要对字符串执行重复修改的情况下,与创建新的 String 对象相关的系统开销可能会非常昂贵。如果要修改字符串而不创建新的对象,则可以使用 System.Text.StringBuilder 类。例如,当在一个循环中将许多字符串连接在一起时,使用 StringBuilder 类可以提升性能。1.它是引用类型,在堆上分配内存2.运算时会产生一个新的实例3.String 对象一旦生成不可改变(Immutable)3.定义相等运算符(== 和 !=)是为了比较 String 对象的值(而不是引用)
以上是结合一些资料的说明 很明显可以发现在组装字符串用StringBuilder是毫不犹豫的可大家都知道StringBuilder效率高 但是它的Append,AppendFormat比 string str +=效率高多少呢?由于最近的项目需要,大多都是采用AJAX技术,就需要在中间件传大量的格式化数据到JS层,就顺便做了一个测试:
在数据较少的时候效率其实差别不大,主要是内存的开销有差别 可数据一旦较大,用StringBuilder.Append要比string str +=快上约30倍..... 这个就很吓人了,当时就呆了一下,所以在这儿说说,希望大家都能够了解,更优化自己的程序,有可能 大家早就知道了!呵呵!那就见笑了! 就当放点儿分吧!
以上是结合一些资料的说明 很明显可以发现在组装字符串用StringBuilder是毫不犹豫的可大家都知道StringBuilder效率高 但是它的Append,AppendFormat比 string str +=效率高多少呢?由于最近的项目需要,大多都是采用AJAX技术,就需要在中间件传大量的格式化数据到JS层,就顺便做了一个测试:
在数据较少的时候效率其实差别不大,主要是内存的开销有差别 可数据一旦较大,用StringBuilder.Append要比string str +=快上约30倍..... 这个就很吓人了,当时就呆了一下,所以在这儿说说,希望大家都能够了解,更优化自己的程序,有可能 大家早就知道了!呵呵!那就见笑了! 就当放点儿分吧!
解决方案 »
- 急~忘记了~如何把数据库数据放入LISTVIEW里
- 使用WebClient+backGroundWork下载http文件时的问题,再线等,解答马上给分
- return怎样返回引用类型对象!!
- 做.NET开发,你选用了有效的代码生成工具了么?
- listview和textbox的若干问题
- datagridview为何不能显示parent/child关系?
- 原帖要沉了,。。。。。。关于 RichTextBox 求助
- 求救:怎样实现不同按钮分别控制不同输入控件的验证功能?
- 如何把Gif类型的图像转换成bmp
- 本站收集的JSP NET XML 数据库书籍列表一
- GDI+ Graphics.DrawString 绘制多处文字,刷新不完整。
- winform 根据鼠标移动画线,这一个问题想了3年了还不太会
有30%以上的CPU都在干这件事情,而这个跟业务相比只是九牛一毛
拼字符串(主要是拼sql)我一般用string.Format(),有时也用+。
只有在字符频繁拼接时才用SB。23楼的处理数据包难道都是处理字符串?为什么不直接处理二进制呢?
又或者比如一个7层负载?
其实不管是教材上还是各种资料中,都反复说过这一点,但大多数人都有意无意地忽略了。如果连StringBuilder还不能满足要求的话,我想只有申请一个byte[],直接操作其中的数据了。不过做得不好的话,效率未必及得上StringBuilder。
嗯,同意你的第二句,那如果是这样的话,应该就没有更强大的东西可以让append字符串更快了。
当然这也是相对的, 处理的数据多了,时间肯定会比操作更少的数据长,这个是必然的。这种
方式不行我们就可以换种思路换种方式去处理,不能吊死在一棵树上嘛! 要 不多可惜!
就跟操作数据库一样,平常操作少,数据也少我们用access但是数据一旦多了,操作量大了,我们
就会考虑换个数据库了!