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

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

我们都知道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";
}
}
}
目录
相关文章
|
3天前
|
安全
String,Stringbuffer,StringBuilder的区别
【8月更文挑战第16天】String,Stringbuffer,StringBuilder的区别
10 2
|
11天前
|
安全 程序员 C++
C++ --> string类的使用(详细介绍)
C++ --> string类的使用(详细介绍)
26 5
|
11天前
|
存储 编译器 C语言
C++ --> string类模拟实现(附源码)
C++ --> string类模拟实现(附源码)
35 4
|
11天前
|
安全 Java
12 Java常用类(二)(String类+时间类+BigDecimal类等等)
12 Java常用类(二)(String类+时间类+BigDecimal类等等)
23 2
|
1天前
|
缓存 安全 Java
【揭秘】String vs StringBuilder vs StringBuffer:三大字符串类的秘密较量!你真的知道何时该用哪个吗?
【8月更文挑战第19天】探讨Java中`String`、`StringBuilder`与`StringBuffer`的区别及应用场景。`String`不可变,适合做哈希表键或多线程共享。`StringBuilder`支持动态修改字符串,适用于单线程环境以提高性能。`StringBuffer`与`StringBuilder`功能相似,但线程安全。示例代码展示各类型的基本用法。选择哪种类型取决于具体需求和性能考量。
|
7天前
|
编译器 C语言 C++
【C++】模拟实现string类
【C++】模拟实现string类
|
7天前
|
存储 算法 C语言
【C++】认识使用string类
【C++】认识使用string类
|
1月前
|
存储
数据存储之数组的特点,长度固定,适应变化需求,集合类特点是空间可变,ArrayList泛型,ArrayList<String> array = new ArrayList<String>()
数据存储之数组的特点,长度固定,适应变化需求,集合类特点是空间可变,ArrayList泛型,ArrayList<String> array = new ArrayList<String>()
|
1月前
|
C++
【C++】string类的使用④(常量成员Member constants)
C++ `std::string` 的 `find_first_of`, `find_last_of`, `find_first_not_of`, `find_last_not_of` 函数分别用于从不同方向查找目标字符或子串。它们都返回匹配位置,未找到则返回 `npos`。`substr` 用于提取子字符串,`compare` 则提供更灵活的字符串比较。`npos` 是一个表示最大值的常量,用于标记未找到匹配的情况。示例代码展示了这些函数的实际应用,如替换元音、分割路径、查找非字母字符等。
|
2月前
|
Java UED
Java中String强转int:一种常见的错误和解决方法
在Java中将非数字字符串转换为整数会导致`NumberFormatException`。要解决这个问题,可以使用`try-catch`捕获异常,正则表达式验证数字格式,或利用异常信息提供错误提示。例如,`Integer.parseInt()`会因遇到非数字字符如`&quot;123abc&quot;`而抛出异常,但通过异常处理或正则`\\d+`可确保安全转换。记得在编程时避免直接强转,以防止程序异常中断。