找到一篇国外的代码,专门来测试这个,

String+

String.Concat

String.Format

StringBuilder

前三个在100个左右字符串差不多,

String.Concat会获得稍微好一点点的性能提高,

String.Format会让你使用起来更方便,

StringBuilder更适合更多更长的字符串拼接,

如果有其它见解,还请指导。

using System;
using System.Diagnostics;
using System.Text;
namespace CompareInstructionExecutionSpeed
{
public delegate void CompareExcecutionSpeed(int loop);
class Program
{
public static string ResultConcatenation = string.Empty;
public static readonly StringBuilder Sb = new StringBuilder();
public static readonly Stopwatch Stopwatch = new Stopwatch(); public static void Main()
{
CompareExcecutionSpeed methods = StringBuilderExecutionSpeed;
methods += StringConcatExecutionSpeed;
methods += ManualConcatenationExecutionSpeed;
methods += StringFormatExecutionSpeed;
//methods+=Some Method -- you can add your method to calculate speed. methods.Invoke();//count Console.ReadKey();
} //Elapsing StringBuilder -------------------------------------------
public static void StringBuilderExecutionSpeed(int loop)
{
Stopwatch.Restart();
for (int i = ; i < loop; i++)
{
ShowPercentProgress(i, loop);
Sb.Append(" str");
Sb.AppendLine(i.ToString());
}
Stopwatch.Stop();
ShowCompareResult("StringBuilder", Stopwatch);
} //Elapsing Str1+Str2+... -------------------------------------------
public static void ManualConcatenationExecutionSpeed(int loop)
{
Stopwatch.Restart();
for (int i = ; i < loop; i++)
{
ShowPercentProgress(i, loop);
ResultConcatenation += " str" + i + "\n";
}
Stopwatch.Stop();
ShowCompareResult("str1+str2+...", Stopwatch);
} //Elapsing String.Concat -------------------------------------------
public static void StringConcatExecutionSpeed(int loop)
{
Stopwatch.Restart();
for (int i = ; i < loop; i++)
{
ShowPercentProgress(i, loop);
ResultConcatenation += string.Concat(" str", i, "\n");
}
Stopwatch.Stop();
ShowCompareResult("String.Concat", Stopwatch); } //Elapsing String.Format -------------------------------------------
public static void StringFormatExecutionSpeed(int loop)
{
Stopwatch.Restart();
for (int i = ; i < loop; i++)
{
ShowPercentProgress(i, loop);
ResultConcatenation += string.Format(" str{0}\n", i);
}
Stopwatch.Stop();
ShowCompareResult("String.Format", Stopwatch);
} //Show Compare Result---------------------------------------------
public static void ShowCompareResult(string message, Stopwatch stopwatch)
{
Console.ResetColor();
Console.WriteLine("\r{0}\t{1,9} Millisecond ~={2,3} second ~={3,3} minutes",
message,
Math.Round(stopwatch.Elapsed.TotalMilliseconds),
Math.Round(stopwatch.Elapsed.TotalSeconds),
Math.Round(stopwatch.Elapsed.TotalMinutes));
} //Show processing progress----------------------------------------
static void ShowPercentProgress(int currElementIndex, int totalElementCount)
{
Console.ForegroundColor = ConsoleColor.Green;
int percent = ( * (currElementIndex + )) / totalElementCount;
Console.Write("\r{0}%", percent);
}
}
}

String+ String.Concat String.Format StringBuilder 之间的性能测试的更多相关文章

  1. String、StringBuffer与StringBuilder之间区别[全屏看文]

    String.StringBuffer与StringBuilder之间区别[全屏看文]   最近学习到StringBuffer,心中有好些疑问,搜索了一些关于String,StringBuffer,S ...

  2. String、StringBuffer、StringBuilder之间区别

    String,StringBuffer,StringBuilder 之间区别 在字符串处理中C#提供了String.StringBuffer.StringBuilder三个类.那么他们到底有什么优缺点 ...

  3. String、StringBuffer与StringBuilder之间区别(转)

    原文链接:String.StringBuffer与StringBuilder之间区别 最近学习到StringBuffer,心中有好些疑问,搜索了一些关于String,StringBuffer,Stri ...

  4. 自己(转)String、StringBuffer与StringBuilder之间区别

    String.StringBuffer与StringBuilder之间区别   最近学习到StringBuffer,心中有好些疑问,搜索了一些关于String,StringBuffer,StringB ...

  5. (转)String、StringBuffer与StringBuilder之间区别

    原文地址: http://www.cnblogs.com/A_ming/archive/2010/04/13/1711395.html 关于这三个类在字符串处理中的位置不言而喻,那么他们到底有什么优缺 ...

  6. String、StringBuffer、StringBuilder之间的区别

    String                      字符串常量 StringBuffer         字符串变量(线程安全) StringBuilder       字符串变量(非线程安全) ...

  7. java中String,StringBuffer,StringBuilder之间的区别

    文章转载自:http://www.cnblogs.com/frankliiu-java/archive/2010/07/05/1771537.html String是固定长度的字符串,如果要发生变化必 ...

  8. Java中String、StringBuffer和StringBuilder之间的区别

    String在Java中是字符串常量 例如 String str = "abc"; str = str + 1; System.out.println(str); 结果将是abc1 ...

  9. String、Stringbuffer和Stringbuilder之间的区别

    关于这三个类在字符串处理中的位置不言而喻,那么他们到底有什么优缺点,到底什么时候该用谁呢?下面我们从以下几点说明一下 1.在执行速度方面:Stringbuilder>Stringbuffer&g ...

随机推荐

  1. 理解 angular 的路由功能

    相信很多人使用angular 都是因为他路由功能而用的 深入理解ANGULARUI路由_UI-ROUTER 最近在用 ionic写个webapp 看到几个demo中路由有好几种,搞的有点晕,查下资料研 ...

  2. copy和mutableCopy都是浅拷贝!!!------你被骗了很多年

    所有系统容器类的copy或mutableCopy方法,都是浅拷贝!!! (ps:什么是容器?比如NSArray,NSMutableArray,NSDictionary,NSMutableDiction ...

  3. POJ3228 并查集或二分最大流枚举答案

    忘记写题意了.这题题意:给出每个地点的金矿与金库的数量,再给出边的长度.求取最大可通过边长的最小权值使每个金矿都能运输到金库里. 这题和之前做的两道二分枚举最大流答案的问法很相识,但是这里用最大流速度 ...

  4. PS各个工具的字母快捷键和英…

    原文地址:PS各个工具的字母快捷键和英文全名作者:Tycho     选框-Marquee(M)     移动-move(V)     套索-Lasso(L)     魔棒-Wand(W) 喷枪-in ...

  5. 201521123117 《Java程序设计》第8周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 2. 书面作业 1.List中指定元素的删除(题目4-1) 1.1 实验总结: 1.通过equals方法以及l ...

  6. 201521123024《Java程序设计》第3周学习总结

    1. 本周学习总结 2. 书面作业 1.代码阅读 public class Test1 { private int i = 1;//这行不能修改 private static int j = 2; p ...

  7. 201521123104 《Java程序设计》 第10周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 2. 书面作业 1. finally(题目4-2) 1.1 截图你的提交结果(出现学号) 1.2 4-2中f ...

  8. 201521123014《Java程序设计》第13周学习总结

    1. 本周学习总结 思维导图: 2. 书面作业 Q1. 网络基础 1.1 比较ping www.baidu.com与ping cec.jmu.edu.cn,分析返回结果有何不同?为什么会有这样的不同? ...

  9. sed命令基础2

    我在sed命令基础里面说了一下sed的基础用法,sed还有一些高级用法,由于我也是在学习中,写的博客可能会有想不到的地方,有问题希望大家指出. sed的高级用法主要在于两个空间的使用,模式空间和保持空 ...

  10. hibernate中Query的list和iterator区别(续)

    打开cache后query的list和iterator方法区别 将query 的cache打开的话,缓存的是query本身,以hql 生成的 sql ,再加上参数,分页等信息做为key值,而不是que ...