日期:2014-05-18  浏览次数:21001 次

string.Format效率问题
最近写项目 遇到的一个 问题~

需要拼接 字符串~ 量不是很大(汗...) 都类似是 

一: url = "..." + id + "..." + name;这类挺短的,

后来改成了 

二: url = string.Format("...{0}...{1}",id,name);

这种小拼接的 字符串 大概需要 10多个~ 所以 就联想到的 效率问题~


我想问 到底是 直接 一 类型的~ 还是 二 类型的 哪个效率能好点呢~ 基本上 用不到StringBuilding 

求真相! 吃饭啦 吃完饭回来 哈!

------解决方案--------------------
用stringbuilder 吧,效率比拼接的要好吧,量不大的话两种都差不多
------解决方案--------------------
stringbuilder 效率最高
------解决方案--------------------
探讨
stringbuilder 效率最高

------解决方案--------------------
MSDN上的原话:
如果您串联的字符串数量不那么巨大(例如,在循环中),那么这些代码的性能成本可能不会很高。上述情况同样适用于 String.Concat 和 String.Format 方法。
Concatenate Multiple Strings


这些代码指的是通过+的方式进行字符串连接.

比较String.Format和+这样的字符串连接方式,本身意义不大.


------解决方案--------------------
支持了...
------解决方案--------------------
如果是我,肯定用第二种
好处:写的时候没这么麻烦,代码一眼看过去也不会觉得乱。
你看第一种,拼接的多辛苦啊。看得都头晕
其次,第二种效率也会好点。



------解决方案--------------------
常用第二种
------解决方案--------------------
探讨
常用第二种

------解决方案--------------------

stringbuilder 效率是最高

不过
10多个没必要考虑效率问题吧?
直接用第二种……
------解决方案--------------------
如果id是数字,不是字符串,写成id.ToString。如果你的值类型变量都写了.ToString()。那么你第二种方法也不是很慢。
1,2方法是等效的,效率上没差别。这里用StringBuilder反而开销更大。多个字符串相加,你逻辑就是如此,是无法避免的,StringBuilder只是缓存字符数组来达到避免创建过多的字符串对象,但在你这里,拼接并不会创造很多的string。而是一个,因为那叫做初始化。
事实上,我更倾向于第一种写法,第二种写法貌似直观,真要是拼接的多了,比如{27},所表示的变量是哪一个,你不要数一阵子?
------解决方案--------------------
涉及到拼接,肯定首选stringbulid()
他不是只用来处理大字符串的,他自己会伸缩内存占用,自己会扩展,不存在你字符短就效率差的问题