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

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 新手容易碰到的坑

    Q1.<div ng-include="views/user/show.html"></div> 错在哪里? 如果你这么写过,会发现这个位置啥也没有加载出来 ...

  2. servlet中的字符编码过滤器的使用

    一:简介 Servlet过滤器是客户端和目标资源的中间层组件,主要是用于拦截客户端的请求和响应信息.如当web容器收到一条客户端发来的请求 web容器判断该请求是否与过滤器相关联,如果相关联就交给过滤 ...

  3. unity中object 对象之间用c# delegate方式进行通信

    unity 3D经常需要设计到不同object之间数据通信和事件信息触发.这里可以利用C#本身的事件和代理的方法来实现. 这里实现了在GUI上点击按钮,触发事件,移动object cube移动的例子. ...

  4. 【2017集美大学1412软工实践_助教博客】团队作业6——展示博客(Alpha版本)

    题目 团队作业6: http://www.cnblogs.com/happyzm/p/6791211.html 团队成绩 团队成员简介 项目地址 项目目标,包括典型用户.功能描述.预期用户数量 如何满 ...

  5. 团队作业4——第一次项目冲刺(Alpha版本)第六天and第七天

    团队作业4--第一次项目冲刺(Alpha版本)第六天and第七天 第一次项目冲刺(Alpha版本)第六天 一.Daily Scrum Meeting照片   二.燃尽图 1.解释说明横纵坐标代表的含义 ...

  6. Swing-setMaximumSize()用法-入门

    与setMinimumSize()一同讨论.顾名思义,这两个函数用于设置窗体的最大.最小值.然而测试发现,setMaximumSize()直接作用于JFrame时,无法实现其预定功能,setMinim ...

  7. 201521123054 《Java程序设计》 第2周学习总结

    本周学习总结 能够利用jdk文档处理实验问题: 动态数组的学习: 书面作业 1.使用Eclipse关联jdk源代码,并查看String对象的源代码(截图)?分析String使用什么来存储字符串的?分析 ...

  8. 201521123111《Java程序设计》第9周学习总结

    1. 本章学习总结 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 附上一个链接 2. 书面作业 本次PTA作业题集异常 1.常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 ...

  9. Junit4学习(三)Junit运行流程

    一,验证Junit测试方法的流程 1,在test/com.duo.util右键,新建测试类 2,生成后的代码: package com.duo.util; import static org.juni ...

  10. python基础之socket

    一.osi七层 完整的计算机系统由硬件,操作系统,软件组成. 互联网的核心就是由一堆协议组成,协议就是标准,如全世界通信的标准就是英语. 如果把计算机比作人,那么互联网协议就是计算机界的英语,所有计算 ...