StringBuilder和StringBuffer的效率比较

结论

  • 在万级的使用里面,效率没有可比性,不需要太过关注
  • 在十万即以后,效率渐渐显现,StringBuilder慢慢站住优势,效率倍数最高到了3倍
  • 到亿级以后,差距不大,但还是StringBuilder要稍微快些
  • 内存方面, 在百万级别以后StringBuilder内存使用明显低一些,到亿级以后差距不大

执行代码

public class Test {public static Runtime runtime = Runtime.getRuntime();public static void main(String[] args) {long maxMemory = runtime.maxMemory();System.out.println("最大内存: " + maxMemory/1024/1024 + "M");int [] times = {10000, 100000, 1000000, 10000000, 100000000, 1000000000};for (int i : times) {System.out.println("循环执行次数:" + i);StringBuilderTest(i);StringBufferTest(i);System.out.println();}}private static void StringBuilderTest(int times){StringBuilder sbd = new StringBuilder();long start = System.currentTimeMillis();while (sbd.length() < times) {sbd.append("a");}System.out.println("StringBuilder执行时间:" + (System.currentTimeMillis() - start));System.out.println("StringBuilder使用内存: " + (runtime.totalMemory() - runtime.freeMemory())/1024/1024 + "M");}private static void StringBufferTest(int times){StringBuffer sbf = new StringBuffer();long start = System.currentTimeMillis();while (sbf.length() < times) {sbf.append("a");}System.out.println("StringBuffer执行时间:" + (System.currentTimeMillis() - start));System.out.println("StringBuffer使用内存: " + (runtime.totalMemory() - runtime.freeMemory())/1024/1024 + "M");}
}

执行结果

最大内存: 7282M
循环执行次数:10000
StringBuilder执行时间:1
StringBuilder使用内存: 15M
StringBuffer执行时间:1
StringBuffer使用内存: 15M循环执行次数:100000
StringBuilder执行时间:3
StringBuilder使用内存: 15M
StringBuffer执行时间:6
StringBuffer使用内存: 15M循环执行次数:1000000
StringBuilder执行时间:11
StringBuilder使用内存: 17M
StringBuffer执行时间:24
StringBuffer使用内存: 21M循环执行次数:10000000
StringBuilder执行时间:86
StringBuilder使用内存: 94M
StringBuffer执行时间:94
StringBuffer使用内存: 165M循环执行次数:100000000
StringBuilder执行时间:720
StringBuilder使用内存: 545M
StringBuffer执行时间:731
StringBuffer使用内存: 856M循环执行次数:1000000000
StringBuilder执行时间:6782
StringBuilder使用内存: 4546M
StringBuffer执行时间:7703
StringBuffer使用内存: 4583M

StringBuilder和StringBuffer的效率比较相关推荐

  1. String、StringBuilder、StringBuffer三者执行效率

    一.String.StringBuilder.StringBuffer的执行效率 StringBuilder > StringBuffer > String 二.测试代码 package ...

  2. StringBuilder、StringBuffer、String区别

    相信大家对 String 和 StringBuffer 的区别也已经很了解了,但是估计还是会有很多同志对这两个类的工作原理有些不清楚的地方,今天重新把这个概念给大家复习一下,顺便牵出 J2SE5.0 ...

  3. 一篇与众不同的 String、StringBuilder 和 StringBuffer 详解

    1 碎碎念  这是一道老生常谈的问题了,字符串是不仅是 Java 中非常重要的一个对象,它在其他语言中也存在.比如 C++.Visual Basic.C# 等.字符串使用 String 来表示,字符串 ...

  4. 2.Java中String,StringBuilder以及StringBuffer的关系与区别

    String     StringBuffer     StringBuilder String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且浪费大量 ...

  5. 探秘Java中String、StringBuilder以及StringBuffer

    相信String这个类是Java中使用得最频繁的类之一,并且又是各大公司面试喜欢问到的地方,今天就来和大家一起学习一下String.StringBuilder和StringBuffer这几个类,分析它 ...

  6. StringBuilder 、StringBuffer 、 String

    2019独角兽企业重金招聘Python工程师标准>>> 一.三者在执行速度方面的比较: StringBuilder >  StringBuffer  >  String ...

  7. 探秘Java中的String、StringBuilder以及StringBuffer

    转载:http://www.cnblogs.com/dolphin0520/p/3778589.html 一.你了解String类吗? 想要了解一个类,最好的办法就是看这个类的实现源代码,String ...

  8. StringBuilder与StringBuffer比较

    /**  * 1.append(),把字符串加入到以后的字符序列的后面  * 请注意:append()方法的返回值还是当前的StringBuffer对象,可以实用方法的连缀.  * StringBui ...

  9. Java核心API -- 2(String、StringBuilder、StringBuffer)

    1. String字符串 1)String类型介绍 String类采用final修饰,String对象为不可变对象,一旦在内存中创建,内容不能发生变化,若要对字符串内容改变,那么就会创建新对象. St ...

  10. java字符串拼接例子_Java详解【String】+【StringBuilder vs StringBuffer】+【字符串拼接】...

    String详解 注意区分对象和对象的引用 首先来看一下我在jdk中找到的String源代码,这里只截取开头的小小一部分 public final class String implements ja ...

最新文章

  1. keepalived+nginx负载均衡+ApacheWeb实现高可用
  2. 2021年春季学期-信号与系统-第六次作业参考答案-第十小题
  3. 玩linux笔记——持续更新
  4. URI和URL的区别(12万访问量)
  5. 【tfcoreml】tensorflow向CoreML模型的转换工具封装
  6. idea修改回默认字体,设置 IntelliJ Idea 的中英文字体
  7. angular 常用指令的使用
  8. Codeforces Round #468 (Div. 2, based on Technocup 2018 Final Round)
  9. 计算机装配方案之游戏发烧型,5000元Intel八代i5-8500配RX580电脑配置 畅玩各类中大型游戏...
  10. QoS配置说明(CBWFQ/LLQ/PQ/CQ/WFQ)
  11. MFC中Combo的使用
  12. 【开源代码】在criteo数据集用MLP跑出AUC=0.809的结果
  13. android studio官方教程 pdf,android studio教程pdf
  14. 为了牙齿美白,该不该给百天的小宝宝补充氟化物?
  15. flutter原生插件开发--IOS端
  16. 为什么面试时面试官要问你有没有车贷,房贷和负债?
  17. hudson.plugins.git.GitException
  18. USACO1996《修理牛棚》解题报告
  19. 认识广东民系,了解潮汕人
  20. 直击|国美将要进军社交电商?回应:属实

热门文章

  1. linux报错ora12514,ORA-12514:RMAN连接报错解决
  2. Kubernetes 学习总结(29)—— 使用 kubeadm 部署 Kubernetes 1.24 详细步骤总结
  3. Mysql支持translate函数吗_Oracle-函数-translate
  4. Android跳转应用市场更新自己《完美适配大部分手机应用商店》
  5. MTK6577+Android之音频(audio)移植
  6. 服务器数据恢复案例:FreeNAS数据恢复过程记录
  7. 基于python提火车票信息_python3.X 抓取火车票信息【修正版】
  8. NCEPU-EDM使用说明
  9. 深入解析淘宝Diamond之客户端架构
  10. 说说Stack Overflow和Quora