• Java8性能优化之字符串拼接


    字符串拼接常用到的几种方式如下:

      1、“+”拼接;

      2、concat拼接;

      3、StringBuilder(StringBuff)拼接。

    几种拼接方式的比较测试如下:

    代码:

         //字符串拼接测试
            String appendedStr = "a";
            String appendStr = "b";
    
            System.out.println("测试代码循环10000次。。。,结果如下:");
            long length = 10000;
    
            //➕号拼接
            long begin = System.currentTimeMillis();
            for (int i = 0; i < length; i++) {
                appendedStr += appendStr;
            }
            long end = System.currentTimeMillis();
            System.out.println("➕号拼接字符串用时:"+(end - begin));
    
            //concat拼接
            begin = System.currentTimeMillis();
            for (int i = 0; i < length; i++) {
                appendedStr.concat(appendStr);
            }
            end = System.currentTimeMillis();
            System.out.println("concat拼接字符串用时:"+(end - begin));
    
            //stringbuilder拼接
            begin = System.currentTimeMillis();
            StringBuilder stringBuilder = new StringBuilder(appendedStr);
            for (int i = 0; i < length; i++) {
                stringBuilder.append(appendStr);
            }
            stringBuilder.toString();
            end = System.currentTimeMillis();
            System.out.println("StringBuilder拼接字符串用时:"+(end - begin));

    测试结果如下:

    其中第一种方式拼接字符串在我的视眼中是最常见的,孰不知第一种方式是最不值得提倡的(性能消耗大,效率低),concat是由String类提供的封装类性能较“+”好很多,相较于前两者StringBuilder的速度基本可以忽略,快太多了。

    以上没有测试StringBuff主要是因为StringBuff和StringBuilder的实现实现原理和操作基本上一致,主要差别是StringBuff是由synchronized修饰,支持并发操作线程安全的类。而StringBuilder是不支持并发操作的,所以多线程时建议使用StringBuff。单线程中StringBuilder的性能要好于StringBuff。

    StringBuilder 和 StringBuff在单线程下的比较测试如下:

    由以上测试结果可以看出,在百万级别以下这两种方式是难分伯仲的,但是上升的千万级别的时候差别就很明显了。

    代码优化(性能提升)任重道远,希望大牛能给予建议。

    初心回归,时光已逝!
  • 相关阅读:
    winform中textbox属性Multiline=true时全选
    golang中的类和接口的使用
    beego上传文件
    golang 字符串操作实例
    golang操作文件
    golang获取程序运行路径
    ECharts使用心得
    es6新特性分享
    es6分享——变量的解构赋值
    NPM使用前设置和升级
  • 原文地址:https://www.cnblogs.com/yin1361866686/p/10343879.html
Copyright © 2020-2023  润新知