zoukankan      html  css  js  c++  java
  • StringBuilder的四种清空方式及其效率比较

    在平时的开发中,StringBuilder用的还是比较常见的,主要是用于优化String字符串的拼接操作。这里介绍一下StringBuilder常见的清空方式:

    1. 使用new关键字重新生成一个StringBuilder对象;
    2. 使用StringBuilder的delete方法;
    3. 使用StringBuilder的setLength方法;
    4. 使用StringBuilder的replace方法。

    接下来分别测试上述4个方法,查看一下效率:

    1. 测试new新建对象:

      

      @Test
        public void newTest() {
            int forCount = 100000000;
            StringBuilder sb = new StringBuilder();
            long startTime = System.currentTimeMillis();
            for (int i = 0; i < forCount; i++) {
                sb.append("1111");
                sb.append("2222");
                sb.append("3333");
                sb.append("4444");
                // 新建对象
                sb = new StringBuilder();
            }
            System.out.println("newTest()耗时:" + (System.currentTimeMillis() - startTime));
        }

    运行结果:

    newTest()耗时:2250
    
    1. 测试delete方法:
        @Test
        public void deleteTest() {
            int forCount = 100000000;
            StringBuilder sb = new StringBuilder();
            long startTime = System.currentTimeMillis();
            for (int i = 0; i < forCount; i++) {
                sb.append("1111");
                sb.append("2222");
                sb.append("3333");
                sb.append("4444");
                // 使用delete方法清空
                sb.delete(0, sb.length());
            }
            System.out.println("deleteTest()耗时:" + (System.currentTimeMillis() - startTime));
        }
    

    运行结果:

    deleteTest()耗时:1780
    
    1. 测试setLength方法:
        @Test
        public void setLengthTest() {
            int forCount = 100000000;
            StringBuilder sb = new StringBuilder();
            long startTime = System.currentTimeMillis();
            for (int i = 0; i < forCount; i++) {
                sb.append("1111");
                sb.append("2222");
                sb.append("3333");
                sb.append("4444");
                // 使用setLength方法清空
                sb.setLength(0);
            }
            System.out.println("setLengthTest()耗时:" + (System.currentTimeMillis() - startTime));
        }
    

    运行结果:

    setLengthTest()耗时:1751
    
    1. 测试replace方法:
    	@Test
        public void replaceTest() {
            int forCount = 100000000;
            StringBuilder sb = new StringBuilder();
            long startTime = System.currentTimeMillis();
            for (int i = 0; i < forCount; i++) {
                sb.append("1111");
                sb.append("2222");
                sb.append("3333");
                sb.append("4444");
                // 使用replace方法清空
                sb.replace(0, sb.length(), "");
            }
            System.out.println("replaceTest()耗时:" + (System.currentTimeMillis() - startTime));
        }
    

    运行结果:

    replaceTest()耗时:1776
    

    由结果可知,上述四种方法中,使用new关键字循环创建对象效率最低,其他三种方法耗时相近,可择优选择使用。

    一颗安安静静的小韭菜。文中如果有什么错误,欢迎指出。
  • 相关阅读:
    三、sersync+rsync实现服务器文件实时同步
    二、Linux实时同步软件之inotify
    一、rsync基础原理
    Samba实战
    DHCP企业实战
    NTP服务器企业实战
    Vsftpd服务器原理及部署
    Python的五大数据类型的作用、定义方式、使用方法,两种交互式方式,格式化输出的三种方式练习。
    pycharm快捷键,变量,字符串,类型的操作方法
    python基础归纳练习 python两种方式,垃圾回收机制,小数整池,数字类型,字符串类型。
  • 原文地址:https://www.cnblogs.com/c-Ajing/p/13448327.html
Copyright © 2011-2022 走看看