zoukankan      html  css  js  c++  java
  • 测试一下StringBuffer和StringBuilder及字面常量拼接三种字符串的效率

    之前一篇里写过字符串常用类的三种方式《java中的字符串相关知识整理》,只不过这个只是分析并不知道他们之间会有多大的区别,或者所谓的StringBuffer能提升多少拼接效率呢?为此写个简单的测试吧:

    public static void main(String[] args) {
            testStringJoin();
        }
    
        static void testStringJoin() {
            
            long beg = System.currentTimeMillis();
            String s = null;
            for (int i = 0; i < 100000; i++) {
                s += "ss";
            }
            
            System.out.println("使用+拼接耗时:" + (System.currentTimeMillis() - beg));
            
            beg = System.currentTimeMillis();
            StringBuffer sb = new StringBuffer();
            for (int i = 0; i < 100000; i++) {
                sb.append("ss");
            }
            System.out.println("使用StringBuffer拼接耗时:" + (System.currentTimeMillis() - beg));
            
            beg = System.currentTimeMillis();
            StringBuilder sbuilder = new StringBuilder();
            for (int i = 0; i < 100000; i++) {
                sbuilder.append("ss");
            }
            System.out.println("使用StringBuilder拼接耗时:" + (System.currentTimeMillis() - beg));
            
        }
        

    代码非常简单,分别用三种方式拼接字符串10万次,然后计算耗时情况,跑下来还是蛮惊人的:

    使用+拼接耗时:9102
    使用StringBuffer拼接耗时:3
    使用StringBuilder拼接耗时:2
    
    使用+拼接耗时:8956
    使用StringBuffer拼接耗时:5
    使用StringBuilder拼接耗时:3

    两组跑来的数据,大的数据相差不大,而且表现的结果也是一致的。这里可以看到使用+这种常量拼接对性能消耗极大,10万次用时9000ms,而StringBuffer和StringBuilder只用了不到5ms。看来一个简单的字符串拼接还是要重视的,之前没想到会有这么夸张的体现。

    至于StringBuffer和StringBuilder来说差别不是特别大,更多的还是考虑线程安全就可以了,也就是说用StringBuffer是种比较保险的方式吧,除非对性能有极高的要求。

  • 相关阅读:
    二分+RMQ/双端队列/尺取法 HDOJ 5289 Assignment
    思维题 HDOJ 5288 OO’s Sequence
    树形DP Codeforces Round #135 (Div. 2) D. Choosing Capital for Treeland
    最大流增广路(KM算法) HDOJ 1853 Cyclic Tour
    最大流增广路(KM算法) HDOJ 1533 Going Home
    最大流增广路(KM算法) HDOJ 2255 奔小康赚大钱
    Complete the Word CodeForces
    Gadgets for dollars and pounds CodeForces
    Vasya and Basketball CodeForces
    Carries SCU
  • 原文地址:https://www.cnblogs.com/5207/p/5923119.html
Copyright © 2011-2022 走看看