String和BulidString性能比较和内在机制
来源:互联网 发布:即墨市网络教研平台 编辑:程序博客网 时间:2024/05/02 02:49
01
static
void
Main(
string
[] args)
02
{
03
TestString();
04
TestStringBuilder();
05
}
06
07
public
static
void
TestString()
08
{
09
DateTime startTime = DateTime.Now;
10
string
str =
string
.Empty;
11
for
(
int
i = 0; i < 10000; i++)
// 一万次
12
{
13
str +=
"a"
;
14
}
15
DateTime endTime = DateTime.Now;
16
TimeSpan timeSpan = endTime - startTime;
17
Console.WriteLine(
"String耗时:{0}"
,timeSpan);
18
19
20
}
21
22
public
static
void
TestStringBuilder()
23
{
24
DateTime startTime = DateTime.Now;
25
StringBuilder sb =
new
StringBuilder();
26
for
(
int
i = 0; i < 1000000; i++)
//一百万次
27
{
28
sb.Append(
"a"
);
29
}
30
DateTime endTime = DateTime.Now;
31
TimeSpan timeSpan = endTime - startTime;
32
Console.WriteLine(
"StringBuilder耗时:{0}"
,timeSpan);
33
Console.ReadLine();
34
35
}
显示结果:
原因分析:
(1)string对象是不可变的
string str="a";
str=str+"b";//这句代码让人误以为str会增加长度;实际上str是创建一个新的对象,而第一个对象被丢弃,成为垃圾收集器的对象。
(2)StringBuilder是可变的
而StringBuilder内部有个足够长的字符串数组,当字符串长度没有超过数组长度的时候,所有的操作都是真对字符串数组的;当字符串长度足够长,它又会智能创建一个更长的字符串数组,把原来数据复制到新的数组当中。
- String和BulidString性能比较和内在机制
- String和StringBuffer性能比较
- 内在父母和内在小孩
- string 和 const char* 的性能比较
- String、StringBuffer、StringBuilder区分和性能比较
- Java中String和StringBuilder性能比较
- 面试的时候内在气质和素质比较重要
- 内在锁和同步
- String.valueOf和字符串直接相加的性能比较
- string和StringBuilder比较
- string 和StringBuilder比较
- 区位码、国标码、机内码的区别和内在机制
- Linux内核:通过wait_event和wake_up内在机制分析等待队列
- Linux内核:通过wait_event和wake_up内在机制分析等待队列
- Linux内核:通过wait_event和wake_up内在机制分析等待队列
- QEMU内在:整体架构和线程模型
- 引用和指针变量的内在模型
- QEMU内在:整体架构和线程模型
- 能改变命运并且谱写新的篇章的新兴行业
- class_create(),class_device_create()或device_create()自动创建设备文件结点
- 西班牙语国际化有乱码的解决方法
- Rootkit的学习与研究
- RootKit hook 之[一] object hook
- String和BulidString性能比较和内在机制
- XML教程
- RootKit hook之[二] SSDT hook
- 类型转换带来的问题
- rootkit hook之[三] inline hook
- 网站优化的经验和技巧--精简高效的C#
- rootkit hook之[四]-- IDT Hook
- 一:CString用法整理
- rootkit hook 之[五] -- IRP Hook全家福