CopyRight © 2008-2009 JavaWind.Net Studio All Rights Reserved
Powered By JWind.BBS Vesion 1.0.0 Beta1
Processed in 8 ms,0 (Queries) Gzip enabled
粤ICP备07511478号
| 风信Java论坛 ›› Java 基础开发 ›› 测试了一下StringBuffer和普通+=的字符串拼接效率 | 登录 -> 注册 |
|
1F 测试了一下StringBuffer和普通+=的字符串拼接效率 jastby Post by : 2008-11-12 16:28:24.0
先说说 String 和 StringBuffer 的基本区别: 这里的"可变"和"不可变",和是不是final没有关系 举个例子: String str1 = "hello"; 而如果是StringBuffer的话,则直接更改str1的内容,而不是先创建一个新的StringBuffer 使用 StringBuffer 主要就是在性能上的考虑。 String 是一种非常常用的数据类型,但由于 String 是不可变对象,在进行 String 的相关操作的时候会产生许多临时的 String 对象。 而 StringBuffer 在操作上是在一个缓冲中进行的,性能当然优越得多。 不过,一般做为简单的字符串传递和其它操作,只不要改变字符串内容的操作,用 String 效率会高一些。 今天我就来简单地测试一下它们的效率: java代码
|
|
2F jastby Post by : 2008-11-12 16:40:28.0
改变了一下 n 的值,查看运行结果:
n=100: += 串接 100 个 ´www.javawind.net ´耗时0毫秒 StringBuffer 串接 100 个 ´www.javawind.net´ 耗时0毫秒 += 串接 100 个 ´www.javawind.net ´耗时16毫秒 StringBuffer 串接 100 个 ´www.javawind.net´ 耗时0毫秒 n=1000: += 串接 1000 个 ´www.javawind.net ´耗时157毫秒 StringBuffer 串接 1000 个 ´www.javawind.net´ 耗时0毫秒 += 串接 1000 个 ´www.javawind.net ´耗时172毫秒 StringBuffer 串接 1000 个 ´www.javawind.net´ 耗时0毫秒 n=3000: += 串接 3000 个 ´www.javawind.net ´耗时1641毫秒 StringBuffer 串接 3000 个 ´www.javawind.net´ 耗时16毫秒 n=5000: += 串接 5000 个 ´www.javawind.net ´耗时6578毫秒 StringBuffer 串接 5000 个 ´www.javawind.net´ 耗时16毫秒 当n=10000时就恐怖了 呵呵: += 串接 10000 个 ´www.javawind.net ´耗时35312毫秒 StringBuffer 串接 10000 个 ´www.javawind.net´ 耗时31毫秒 += 串接 10000 个 ´www.javawind.net ´耗时42422毫秒 StringBuffer 串接 10000 个 ´www.javawind.net´ 耗时31毫秒 += 串接 10000 个 ´www.javawind.net ´耗时44093毫秒 StringBuffer 串接 10000 个 ´www.javawind.net´ 耗时47毫秒 以上数据会因运行环境的计算机的性能和内存开销所影响,但是从相同环境的运行结果来看,StringBuffer 和 String 的操作的效率真的相差很大! |
| 风信Java论坛 ›› Java 基础开发 ›› 测试了一下StringBuffer和普通+=的字符串拼接效率 | 登录 -> 注册 |