zoukankan      html  css  js  c++  java
  • 字符串拼接性能比较出乎意料的结果

     一直认为String拼接大字符串时用StringBuffer能比直接用+号性能更高,今天偶然发现不竟然,是有前提的。如果String对象没用重新赋值,而是一次性把字符串拼接好赋值给String变量时性能是最高的(第二个例子String2)。如果String使用的是+=重新赋值,这时性能确实要比StringBuffer慢2-3倍左右(第一个例子String1)。

    public static void main(String[] args) {
            long startTime = System.currentTimeMillis();
            for (int i = 0; i < 100000; i++) {
                String result = "This is ";
                result += "testing the";
                result += "difference between";
                result += "String and StringBuffer";
            }
            long endTime = System.currentTimeMillis();
            System.out.println(String.format("String+ 1 cost: %s millis", (endTime - startTime)));
    
            startTime = System.currentTimeMillis();
            for (int i = 0; i < 100000; i++) {
                String result = "This is" + "testing the" + "difference" + "between" + "String" + "and" + "StringBuffer";
            }
            endTime = System.currentTimeMillis();
            System.out.println(String.format("String+ 2  cost: %s millis", (endTime - startTime)));
    
            startTime = System.currentTimeMillis();
            for (int i = 0; i < 100000; i++) {
                StringBuffer sbResult = new StringBuffer();
                sbResult.append("This is ");
                sbResult.append("testing the");
                sbResult.append("difference between");
                sbResult.append("String and StringBuffer");
                sbResult.toString();
            }
            endTime = System.currentTimeMillis();
            System.out.println(String.format("StringBuffer cost: %s millis", (endTime - startTime)));
        }

    运行结果:

  • 相关阅读:
    设置VS&IE8控件调试
    VR模型优化技巧
    MFC的资源切换AFX_MANAGE_STATE (转载)
    3D图形学资源收集
    关于C++运算符重载
    Valve(维尔福软件公司) Half Life(半条命) CS(反恐精英)
    MySQL导入SQL文件及常用命令
    折磨了我3天的IIS服务器不能运行asp页面故障
    3721奇遇
    SMS2.0软件测量及出现的故障
  • 原文地址:https://www.cnblogs.com/mousewheel/p/7401320.html
Copyright © 2011-2022 走看看