博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
StringBuilder拼接字符串,“,”在前还是在后问题
阅读量:5132 次
发布时间:2019-06-13

本文共 2170 字,大约阅读时间需要 7 分钟。

在用StringBuilder拼接字符串时,经常使用分隔符,到底把分隔符放前面还是后面好呢?

我认为放前面好,因为StringBuilder在自己空间不够用的时候会成倍增加自己空间,这比较耗时。如果我把分隔符放前面,我就能在早期减少1个字符长度,如果放后面就只能最后去处理,没准就这1位就引起了它扩容。我能想象到的比较好的拼接方法如下,也请高手给出意见。

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 {
class Program {
static void Main(string[] args) {
List
list = new List
{ "aa", "bb", "cc" }; DateTime start = DateTime.Now; int l1 = 0, l2 = 0; for (int i = 0; i < 10000; i++) {
StringBuilder sb = new StringBuilder(8);//8是估算出来的,这个长度影响性能,但也只能近似估算 foreach (var item in list) {
sb.AppendFormat("{0},", item); } string a = sb.ToString(); l1 += sb.Capacity; } //输出所用时间 Console.WriteLine(l1.ToString() + "=" + (DateTime.Now - start)); start = DateTime.Now; for (int i = 0; i < 10000; i++) {
StringBuilder sb2 = null; foreach (var item in list) {
if (sb2 != null) {
sb2.AppendFormat(",{0}", item); } else {
sb2 = new StringBuilder(item, 8); } } string b2 = sb2.ToString(); l2 += sb2.Capacity; } Console.WriteLine(l2.ToString() + "=" + (DateTime.Now - start)); Console.ReadKey(); } } }

运行结果如下:

可见,就差1位也有不小的差距。

补充:最后,我测试了下,最快的方法我认为是如下所示代码:

StringBuilder sb3 = null; foreach (var item in list)                 {
if (sb3 != null) {
sb3.Append(","); sb3.Append(item); } else {
sb3 = new StringBuilder(item, 8); } }

我发现,AppendFormat()明显比Append()要快,而多次调用Append(),要比再其中拼接字符串更快,但是AppendFormat()显然可读性更好一些,怎么写还是看个人喜好,毕竟当性能没有出现问题时,性能问题永远不是问题,呵呵。

转载于:https://www.cnblogs.com/MeteorSeed/archive/2011/11/15/2250014.html

你可能感兴趣的文章
LUT查表法乘法器所犯下错误。。。。
查看>>
在线迁移存储
查看>>
【springBoot】springBoot返回json的一个问题
查看>>
飞舞的蝴蝶(GraphicsView框架)
查看>>
.net通用权限框架B/S (五)--WEB(1)首页
查看>>
sql server日期时间转字符串
查看>>
python __builtins__ str类 (65)
查看>>
openjdk tomcat 安装
查看>>
学习总结(十七)
查看>>
还是Arrays.asList()
查看>>
使用JWT来实现单点登录功能
查看>>
软件工程(2019)结对编程第一次作业
查看>>
linux php安装配置oci8模块
查看>>
mysql 垂直分表技术的实战演练,有实战代码。
查看>>
SQL Server 中的 JSON 数据
查看>>
浅谈WebService开发二(同步与异步调用)转
查看>>
洛谷 绕钉子的长绳子
查看>>
【前端图表】echarts散点图鼠标划过散点显示信息
查看>>
一个文科妹子的前端悲欢编程之路
查看>>
Eclipse如何从导入SVN上导入项目
查看>>