首页 新闻 会员 周边

c# string和stringBuilder性能的问题

0
[已解决问题] 解决于 2012-08-14 13:22

这两个类哪个性能比较好一些?C#中测试每段代码执行时间的方法是什么?最好能排除掉别的方面的影响,例如是排除其他进程或者说是垃圾回收的影响的方法

微澜的主页 微澜 | 初学一级 | 园豆:-1
提问于:2012-06-05 11:06
< >
分享
最佳答案
0

string与stringbuilder的区别在于当拼接的字符串比较长的时候用stringbuilder效率高

如:string    a=“123”;

     string     b="456";

string a=a+b;此时会把a和b的内容加载到内存,并创建一个新的字符串来进行拼接,但是stringbuilder则是

stringbuilder  a="123";

string  b="456";

a.Append(b)则是直接在a字符串的内容后面加上b,在原来的基础上拼接,而string是新创建了一个字符串

当拼接的字符串很小时差别不大,但是拼接的字符串很大时,则就不是一个数量级了

奖励园豆:5
FuSheng2012 | 菜鸟二级 |园豆:209 | 2012-06-10 15:43
其他回答(5)
0

如果是要拼比较长的字符串,当然是StringBuilder好点。。。

顾晓北 | 园豆:10844 (专家六级) | 2012-06-05 11:30
0

StringBuilder的性能要好。

string属于引用类型,但实际使用上却是类似于值类型。

监控代码运行时间的类是System.Diagnostics.Stopwatch。

无之无 | 园豆:5095 (大侠五级) | 2012-06-05 11:31

string使用上也是引用类型。

支持(0) 反对(0) 水牛刀刀 | 园豆:6350 (大侠五级) | 2012-06-05 11:31

@水牛刀刀: 我指的是在实际使用上类似值类型

支持(0) 反对(0) 无之无 | 园豆:5095 (大侠五级) | 2012-06-05 11:32

@笨笨蜗牛: 也没有类似值类型啊。举个例子看看。

支持(0) 反对(0) 水牛刀刀 | 园豆:6350 (大侠五级) | 2012-06-05 16:56

@水牛刀刀: 使用上难道不是类似值类型?当你把值放到一个变量的时候,按照引用类型,应该只是地址的变化而已,实际上呢?

比如一个类:

Person p1 = new Person();

p1.Name = "My Name is P1";

Person p2 = p1;

p2.Name = "My Name is P2";

//此时p1的Name属性值也会改。

 

但反过来,用在string上的时候,会有这个变化吗?我指的类似值类型也就是这几个方面。甚至在使用者的角度触发,完全可以把string类型当作值类型来看待(目前发现除了不能定义string?意外)

支持(0) 反对(0) 无之无 | 园豆:5095 (大侠五级) | 2012-06-05 17:01

@笨笨蜗牛: “用在string上的时候,会有这个变化吗”,你怎么用在string上?string没有可写的实例属性。因此不能证明啊。

支持(0) 反对(0) 水牛刀刀 | 园豆:6350 (大侠五级) | 2012-06-05 17:06

@水牛刀刀: 如果一定要较真。。。那就。。。不过是一个见仁见智的问题。我只是说在使用上类似值类型而已!

支持(0) 反对(0) 无之无 | 园豆:5095 (大侠五级) | 2012-06-05 17:16

@笨笨蜗牛: 事实上使用上没有类似啊,举不出任何例子。

支持(0) 反对(0) 水牛刀刀 | 园豆:6350 (大侠五级) | 2012-06-05 17:45
1
artwl | 园豆:16736 (专家六级) | 2012-06-05 11:37
0

多次拼接字符串的话stringbuilder好,我记得曾经在面试题上看到过这个,主要是string拼接字符串的话好像是要另外开辟一个空间的,stringbuilder是在原空间上搞的,大致好像是这样  所以对字符串操作次数多的话stringbuilder比较好

冰封一夏 | 园豆:13 (初学一级) | 2012-06-05 12:06
0

在多拼接字符,不知道拼接次数的时候最好用stringbuilder

这2种根据情况来定吧!

xu_happy_you | 园豆:222 (菜鸟二级) | 2012-06-05 16:58
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册