字符串的拼接,StringBuffer性能上还是远远优于String的

博主曾误以为Java里String已优化到和StringBuffer一样快,为此进行试验。通过循环拼接操作对比二者性能,结果显示差距明显,证明Java编译器未自动转换String拼接。此外,博主还提及未在javac和eclipse中找到‘Optimize Performence’功能。

真是不好意思,在Java Doc里看到一句话就以为String已经优化到可以和StringBuffer一样快了。原文地址

让大家争论了一把。我现在来做个试验:

        long startTimeStamp;
        long endTimeStamp;

        for (int j = 0; j < 20; j++) {
            String s = "";
            StringBuffer sb = new StringBuffer();

            startTimeStamp = (new Date()).getTime();
            for (int i = 0; i < 5000; i++) {
                s = s + String.valueOf(i);
            }
            endTimeStamp = (new Date()).getTime();
            System.out.print(String.valueOf(endTimeStamp - startTimeStamp));

            System.out.print("-----");
            startTimeStamp = (new Date()).getTime();
            for (int i = 0; i < 5000; i++) {
                sb.append(String.valueOf(i));
            }
            endTimeStamp = (new Date()).getTime();
            System.out.println(String.valueOf(endTimeStamp - startTimeStamp));
        }

结果如何呢:

469-----0
453-----0
453-----0
453-----0
453-----0
453-----0
453-----0
454-----0
453-----0
453-----0
515-----0
454-----0
453-----0
468-----0
454-----0
437-----16
437-----0
453-----0
438-----0
438-----0

试验证明,差距是很明显的,Java的编译器还没有聪明到自动转换String的拼接。

我的电脑是AMD 2500,1G内存。JDK1.5.0.5

不知道 Xuefeng 说的“ Optimize Performence ”是什么IDE的功能,我在javac里面没找到,在eclipse里面也没找到。 也不知道Xuefeng有什么证据说编译器优化成了StringBuffer。

不知道 Xuefeng 说的“ Optimize Performence ”是什么IDE的功能,我在javac里面没找到,在eclipse里面也没找到。 也不知道Xuefeng有什么证据说编译器优化成了StringBuffer。

不知道 Xuefeng 说的“ Optimize Performence ”是什么IDE的功能,我在javac里面没找到,在eclipse里面也没找到。 也不知道Xuefeng有什么证据说编译器优化成了StringBuffer。


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值