string类与StringBuilder类性能比较

我们都知道StringBuilder的性能要比string类,是否具体测试过呢,我这里就给出这个程序供测试,一个是Timing类,用来计算时间的。另外一个类就是分别建立string,和stringbuider 类建立100,1000,10000,100000字符连接进行比较。

using System;

using System.Diagnostics;

namespace DataStruct7

{

public class Timing

{

TimeSpan duration;//时间差

public Timing()

{

duration = new TimeSpan(0);

}

//开始时间

public void stopTime()

{

duration = Process.GetCurrentProcess().TotalProcessorTime;

}

//终止时间

public void startTime()

{

GC.Collect();

GC.WaitForPendingFinalizers();

}

//返回结果

public TimeSpan Result()

{

return duration;

}

}

}

另外个类

using System;

using System.
Collections.Generic;

using System.Linq;

using System.Text;

namespace DataStruct7

{

class Program

{

static void Main()

{

int size = 100;

Timing timeSB = new Timing();

Timing timeST = new Timing();

Console.WriteLine();

for (int i = 0; i <= 3; i++)

{

timeSB.startTime();

BuildSB(size);

timeSB.stopTime();

timeST.startTime();

BuildString(size);

timeST.stopTime();

Console.WriteLine("时间(单位毫秒)创建 StringBuilder " + "对象有 " +

 size +" 字符需要的时间: " + timeSB.Result().TotalMilliseconds);

Console.WriteLine("时间(单位毫秒)创建 String " + "对象有" +

size + " 字符需要的时间: " + timeST.Result().TotalMilliseconds);

Console.WriteLine();

size *= 10;

}

}

//创建StringBuilder连接

static void BuildSB(int size)

{

StringBuilder sbObject = new StringBuilder();

for (int i = 0; i <= size; i++)

sbObject.Append("a");

}

//创建string连接

static void BuildString(int size)

{

string stringObject = "";

for (int i = 0; i <= size; i++)

stringObject += "a";

}

}

}

时间: 2024-07-28 17:25:19

string类与StringBuilder类性能比较的相关文章

艾伟_转载:string类与StringBuilder类性能比较

我们都知道StringBuilder的性能要比string类,是否具体测试过呢,我这里就给出这个程序供测试,一个是Timing类,用来计算时间的.另外一个类就是分别建立string,和stringbuider 类建立100,1000,10000,100000字符连接进行比较. using System;using System.Diagnostics;namespace DataStruct7{public class Timing { TimeSpan duration;//时间差 publi

新手学JAVA(三)----StringBuilder类

   上一篇文章新手学JAVA(二)----String类与StringBuffer类的区别中了解到,String的值是不可变的,这就导致 每次对String的操作都会生成新的String对象,不仅效率低下,而且大量浪费有限的内存空间,StringBuffer是可变 类,和线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象.       StringBuffer类和StringBuilder类功能基本相似.算是两个双胞胎.   下面主要说两点   第一点  线程安全   Str

详细分析Java中String、StringBuffer、StringBuilder类的性能_java

我们先要记住三者的特征: String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) 一.定义查看API会发现,String.StringBuffer.StringBuilder都实现了 CharSequence接口,虽然它们都与字符串相关,但是其处理机制不同. String:是不可改变的量,也就是创建后就不能在修改了. StringBuffer:是一个可变字符串序列,它与String一样,在内存中保存的都是一个有序的字符串序

用 StringBuilder 类替代 String

在ASP.NET中我们经常要用到文本对象,一般的操作是定义一个string mystr,然后用mystr+="aaaa"之类的运算来累加.其实还有一个效率高得多的方法:使用 System.Text.StringBuilder 类,该类提供了更高的性能.举例:我们通常会这么写:String begin_query = "select UPPER(MachineName) As MachineName, "+"LOWER(MachineOwner) As Ma

浅析C#中StringBuilder类的高效及与String的对比_C#教程

在C#中,在处理字符串拼接的时候,使用StringBuilder的效率会比硬拼接字符串高很多.到底有多高,如下: static void Main( string[] args ) { string str1 = string.Empty; Stopwatch sw1 = new Stopwatch(); sw1.Start(); for ( int i = 0; i < 10000; i++ ) { str1 = str1 + i.ToString(); } sw1.Stop(); Conso

详解C++中StringBuilder类的实现及其性能优化_C 语言

介绍经常出现客户端打电话抱怨说:你们的程序慢如蜗牛.你开始检查可能的疑点:文件IO,数据库访问速度,甚至查看web服务. 但是这些可能的疑点都很正常,一点问题都没有. 你使用最顺手的性能分析工具分析,发现瓶颈在于一个小函数,这个函数的作用是将一个长的字符串链表写到一文件中. 你对这个函数做了如下优化:将所有的小字符串连接成一个长的字符串,执行一次文件写入操作,避免成千上万次的小字符串写文件操作. 这个优化只做对了一半. 你先测试大字符串写文件的速度,发现快如闪电.然后你再测试所有字符串拼接的速度

【转】StringBuilder类与 String类的区别(C#)

StringBuilder类与 String类的区别(C#) 2007-12-03 15:21 在找工作的时候,去了些公司,避免不了要面试和笔试.不过一般最起初的是笔试.我印象中有这样有一道题目:StringBuilder类与 String类的区别?那时候我不太清楚这两个类的区别,今天在看代码的时候,看到同事也用了StringBuilder类.于是我就上网查查了资料,也想总结下StringBuilder类与 String类的区别.学计算机语言的人一定要明白哦,说不定那天你去找工作了,也会遇到这个

谈String与StringBuilder的性能

String和StringBuilder 的性能比较,网上能找到很多,但是大多数都是比较字符串的连接性能,字 符串的连接 String +=的效率确实不如StringBuilder ,这个大家都能在网上找很多的示例.就这样,我 们被这些铁证同化了,我们开始泛滥的使用StringBuilder,StringBuilder 就是B String好,甚至有些 朋友更进一步,对StringBuilder再进行封装,重载运算符搞个类,来代替String. 但是不是对字符串的一些操作String 都不如St

在C#及.NET框架中使用StringBuilder类操作字符串的技巧_实用技巧

但如果性能的优劣很重要,则应该总是使用 StringBuilder 类来串联字符串.下面的代码使用 StringBuilder 类的 Append 方法来串联字符串,因此不会有 + 运算符的链接作用产生. class StringBuilderTest { static void Main() { string text = null; // Use StringBuilder for concatenation in tight loops. System.Text.StringBuilder