string.Format效率问题
最近写项目 遇到的一个 问题~
需要拼接 字符串~ 量不是很大(汗...) 都类似是
一: url = "..." + id + "..." + name;这类挺短的,
后来改成了
二: url = string.Format("...{0}...{1}",id,name);
这种小拼接的 字符串 大概需要 10多个~ 所以 就联想到的 效率问题~
我想问 到底是 直接 一 类型的~ 还是 二 类型的 哪个效率能好点呢~ 基本上 用不到StringBuilding
求真相! 吃饭啦 吃完饭回来 哈!
------解决方案--------------------用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()
他不是只用来处理大字符串的,他自己会伸缩内存占用,自己会扩展,不存在你字符短就效率差的问题