之前也看过一些对string与StringBuilder的性能分析,总感觉这个应该对整体性能不会产生多大的影响,所以就一直没有关注这块!
由于学程序初期最先接触的string拼接,所以就一直没改变过自己的习惯!
前段时间抽时间写了一个CMS系统,一开始的时候每秒钟大概能生成200条新闻,可是后来由于新闻系统与购物系统整合后,发现生成速度突然就掉下来了,最快的时候每秒钟也就生成130多条新闻,按照正常的情况下不应该会出现这个问题的,于是从后期整合的代码里面找原因,由于生成新闻的时候,我们都要提取相关商品的相关信息并输出,而且这些都是用string进行拼接的,由于拼接的次数比较频繁,
突然就想到了这个string与StringBuilder的性能的问题,于是我粗略的做了一个小小的测试!
用StringBuilder循环的拼接10000次字符串需要的时间为 0到1毫秒!
代码如下:
long tt = long.Parse(DateTime.Now.ToString("yyyyMMddHHmmssfff"));
StringBuilder start = new StringBuilder();
for(int j=0;j<10000;j++)
{
start.Append("测试测试测试测试测试测试测试测试测试测试测试测试");
}
long mm = long.Parse(DateTime.Now.ToString("yyyyMMddHHmmssfff"));
Response.Write(Convert.ToString( mm-tt));
用string循环的拼接100000次字符串需要的时间为 5500到6000毫秒!
代码如下:
long tt = long.Parse(DateTime.Now.ToString("yyyyMMddHHmmssfff"));
string start =string.Empty;
for(int j=0;j<10000;j++)
{
start += "测试测试测试测试测试测试测试测试测试测试测试测试";
}
long mm = long.Parse(DateTime.Now.ToString("yyyyMMddHHmmssfff"));
Response.Write(Convert.ToString( mm-tt));
我原本用的是100000 次拼接做的测试,StringBuilder仅用了30毫秒,但是用string拼接就执行几分钟没有执行完,所以我就改用10000次来做试验了!
简单的可以概括为,string拼接的次数越多,速度则越慢,而StringBuilder则几乎不怎么变化!
string与StringBuilder的性能问题看上去可能很多人觉得没什么,但是一旦操作的次数多了,那么速度就很明显的显示出来了!
我把所有的关于string的操作都改成了 StringBuilder来操作,再看CMS的生成速度可以达到每秒钟生成300条新闻了!属蛇的人2012年运程属猪的人2012年运程2013年运程2012年运程属虎的人2012年运程
声明:我们的CMS是在配置为 windows2003 vps 服务器, 内存为 1G,数据库为Sqlserver2000,新闻数据量为:20万的的情况下进行测试的,
这样基本已经可以满足我们的要求了!
写程序注意细节,尤其是在搭建比较大型的项目时,细节可能就决定了成败!
更多详细信息请查看 java基础知识 http://www.itchm.com/cainiao/java_basic/
分享到:
相关推荐
- **StringBuilder**:由于 `StringBuilder` 允许在原有对象上进行修改,因此在进行字符串拼接等操作时,其性能通常优于 `String`。特别是当字符串拼接操作非常频繁时,这种性能优势尤为明显。 #### 3. 使用场景 -...
在Java编程语言中,String、StringBuilder和StringBuffer都是用来处理字符串的类,它们之间存在一些重要的区别,主要涉及到性能和线程安全性。 首先,`String`类代表的是字符串常量,一旦创建,其内容就不能改变。...
`String.Format()`则在需要格式化输出的场合更有优势,但性能上不及`StringBuilder`。了解这些性能差异有助于编写出更高效的代码,特别是在处理大数据量或性能敏感的场景中。在实际开发中,应该根据具体情况权衡效率...
"String StringBuffer和StringBuilder区别之源码解析" 在Java中,字符串是我们经常使用的数据类型,而String、...我们可以看到,String、StringBuffer和StringBuilder类各有其优缺,选择合适的字符串类是非常重要的。
在Java编程语言中,`String`、`StringBuffer`和`StringBuilder`是处理字符串的三个重要类,它们各自有特定的使用场景和优缺点。理解它们的差异对于编写高效的代码至关重要。 **String类** `String`是不可变的类,...
String, StringBuffer 与 StringBuilder 的区别 在 Java 中,String, StringBuffer 和 StringBuilder 三个类都是用于字符操作的,但它们之间有着很大的区别。 首先,String 是不可变类,意味着一旦创建了 String ...
在Java编程语言中,`String`和`StringBuilder`都是用于处理字符串的重要类,但它们在处理方式和效率上有显著的区别。本资源中的代码是针对这两种类的效率进行测试的实例,旨在帮助开发者理解它们在不同场景下的性能...
在Java编程中,String与StringBuilder都是用来处理字符串的类,但它们在性能上有显著的差异,这主要体现在内存管理和操作效率上。理解这些差异对于优化代码性能至关重要。 首先,String对象在Java中是不可变的,这...
String:字符串常量 StringBuffer:字符创变量 StringBuilder:字符创变量 从上面的名字可以看到,String是“字符创常量”,也就是不可改变的对象。对于这句话的理解你可能会产生这样一个疑问 ,比如这段...
stringbuilder用法 String、StringBuilder、StringBuffer 用法比较String、StringBuilder、StringBuffer 用法比较String、StringBuilder、StringBuffer 用法比较String、StringBuilder、StringBuffer 用法比较String...
总结来说,Java中的String和StringBuilder各有优劣: - String:不可变,线程安全,适用于不需要频繁修改字符串的场景。 - StringBuilder:可变,性能更高,适用于大量字符串操作的场合,单线程环境首选。 - ...
在Java编程语言中,`String`、`StringBuffer`和`StringBuilder`都是用来处理字符串的类,但它们之间存在显著的差异,主要体现在性能、线程安全性和使用场景上。 首先,`String`是最基本的字符串类,它代表的是不可...
String、StringBuffer 和 StringBuilder 是 Java 语言中三种不同类型的字符串处理方式,它们之间存在着明显的性能和线程安全性差异。 String String 类型是不可变的对象,每次对 String 对象进行改变时都会生成一...
总的来说,理解Java中String、StringBuilder和StringBuffer的性能差异和使用场景,可以帮助我们编写出更高效、更适应多线程环境的代码。在处理少量字符串拼接时,+号操作符可能是方便的选择,但在大量拼接或多线程...
String、StringBuilder、StringBuffer的区别 在 Java 中,String、StringBuilder 和 StringBuffer 三者都是字符串处理类,但是它们之间存在着本质的区别。本文将从执行速度、线程安全性、字符串处理方式等方面对这...
与String不同,StringBuilder对象可以在原地修改,不需要每次操作都创建新的对象。因此,当你需要频繁地进行字符串操作,如循环拼接,StringBuilder通常是更好的选择。它提供了一系列方法,如Append、Insert、Remove...
在Java编程语言中,String、StringBuffer和StringBuilder都是用来处理字符串的重要类,它们各自有特定的使用场景和特性。理解这三个类的区别对于任何Java开发者,无论是初学者还是经验丰富的程序员,都是非常重要的...
Java 中 String, StringBuffer 与 StringBuilder 三种字符串类型的区别是很多开发者经常混淆或不了解的知识点。今天,我们将深入探讨这三种字符串类型的区别和用法。 首先,让我们从 String 类型开始。String 类型...
string,stringbuffer,stringbuilder