String、StringBuffer、StringBuilder的性能测试

Qt应用软件【协议篇】自定义协议处理串口半包贴包 Qt串口数据,半包,贴包,丢包数据处理 阅读详情

个人理解
String 为固定长度的不可变的字符串
StringBuilder 为可变的,且提供个最好的性能,其代码如下

  public StringBuilder append(int i) {
    super.append(i);
    return this;
  }
StringBuffer 为可变的,且提供了同步安全的机制,代码如下
  public synchronized StringBuffer append(int i) {
    super.append(i);
    return this;
  }
 
可以看到2个的区别就是StringBuffer是同步的 synchronized 
 
下面是3个性能测试代码
import java.util.Map;

public class MyTest {
  /**
   * @param args
   */
  public static void main(String[] args) {
    testString();
    testStringBuilder();
    testStringBufer();
  }

  static int NUMBER = 10000;

  public static void testString() {
    long begin = System.currentTimeMillis();
    String str = "";
    for (int i = 1; i < NUMBER; i++) {
      str = str + i;
    }
    System.out.println("testString=" + (System.currentTimeMillis() - begin));
  }

  public static void testStringBuilder() {
    long begin = System.currentTimeMillis();
    StringBuilder b = new StringBuilder();
    for (int i = 1; i < NUMBER; i++) {
      b.append(i);
    }
    String str = b.toString();
    System.out.println("testStringBuilder=" + (System.currentTimeMillis() - begin));
  }

  public static void testStringBufer() {
    long begin = System.currentTimeMillis();
    StringBuffer b = new StringBuffer();
    for (int i = 1; i < NUMBER; i++) {
      b.append(i);
    }
    String str = b.toString();
    System.out.println("testStringBufer=" + (System.currentTimeMillis() - begin));
  }
}
 
运行结果如下
testString=750
testStringBuilder=0
testStringBufer=0
可见String的操作是非常消耗资源的,而另外2个则性能优异。
 
对于StringBuilder和StringBuffer的对比,就没有必要了。他们的代码相同,只是缺少了同步而已。
 
结论
大多是情况下,StringBuilder是很好的选择






<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
Python地理数据处理 十七:植被物候提取和分析(Savitzky-Golay) 植被是陆地生态系统中最重要的组分之一,也是对气候变化最敏感的组分,其在全球变化过程中起着重要作用,能够指示自然环境中的大气、水、土壤等成分的变化,其年际和季节性变化可以作为地球气候变化的重要指标。此外,由于生态工程保护建设和植被自然生长等因素,中国陆地生态系统发挥了重要的碳汇作用。因此,定量评估植被时空动态变化是制定生态系统可持续发展目标和衡量生态系统固碳潜力的重要前提,卫星遥感数据衍生的生态参量产品为研究长时间序列全球及区域植被时空变化提供了重要数据源。SG滤波能够对物候信息进行平滑,并提取其中的物候信息 阅读详情

相关推荐

figma MCP + cursor如何将设计稿生成前端页面

Figma MCP配置与代码生成指南 本文详细介绍了如何在Cursor中配置Figma MCP(多上下文处理器)的完整流程:从获取Figma API密钥、设置MCP服务器配置,到添加代码生成规则。关键步骤包括生成Figm a个人访问令牌、配置cursor settings文件、启用MCP服务,以及设置代码规则(包含TypeScript/Vue技术栈规范、BEM命名规则等)。最后提供了将Figma设计稿转化为Vue页面的prompt模板,涵盖文件结构、图片处理、样式规范等具体要求,确保生成代码与设计稿高度一致

weixin_45644355的博客 2909

String ,StringBuffer和StringBuilder的效率测试

public static void main(String[] args) { long startTime = 0L; long endTime = 0L; StringBuffer buffer = new StringBuffer(""); startTime = System.currentTimeMillis(); for (int i = 0; i < 80000; i++) {//StringBuffer 拼接 20000 次 buffer.append(String.valueOf(

m0_54597180的博客 202

Vmware 17保姆级教程:从零部署华为enspPro模拟器(附镜像下载+配置优化)

本文提供了一份详尽的Vmware 17部署华为eNSP Pro模拟器的保姆级教程。内容涵盖从镜像下载、虚拟机导入、网络配置到深度性能调优的全过程,并针对常见启动失败、设备卡顿等故障提供了实用的排查方案,旨在帮助网络工程师和华为认证备考者快速搭建稳定高效的实验环境。

arduino9maker的博客 638

String和StringBuffer 和 StringBuilder 的效率测试

String和StringBuffer 和 StringBuilder 的效率测试和StringBuffer和String进行转换的时候出现的问题

qq_71904844的博客 321

Ghidra逆向分析实战:从安装JDK到解析STM32的bin文件(附SVD插件配置)

本文详细介绍了使用Ghidra进行STM32固件逆向分析的完整流程,从JDK安装配置到SVD插件的应用。通过实战案例展示如何解析bin文件、恢复符号信息以及利用SVD插件识别外设寄存器,帮助开发者高效完成嵌入式设备的逆向工程任务。

weixin_29309475的博客 646

​苹果开发者账号推送证书配置详细指南​

推送证书的配置是iOS应用实现消息推送的核心步骤。通过生成证书、配置描述文件、集成到服务器三大环节,开发者可快速为App启用APNs服务。建议优先使用更灵活的APNs Auth Key替代传统证书,以减少维护成本。确保拥有有效的苹果开发者账号(个人/公司账号),年费已缴纳。

2328

String、StringBuffer、StringBuilder 性能测试

这几个时常用于比较,我们通过实验来分析其性能,然后试图去寻找背后的原因。实验总的代码:public class Test { final static int NUM = 100000; public static void testString(String str){ long start = System.currentTimeMillis();

RHCDS的专栏 854

自定义模型训练——打造专属OpenClaw模型(2026AI版)

本文介绍了OpenClaw自定义模型训练的核心流程,包括框架选择(PyTorch、TensorFlow、HuggingFace和原生OpenClaw框架)、训练环境搭建脚本、以及数据收集系统的设计。数据收集器支持从数据库、API、文件和网络等多种来源获取训练数据,并提供灵活的过滤机制确保数据质量。通过这套系统,开发者可以高效准备训练数据,为后续模型训练打下坚实基础。

博客 877

String类,StringBuffer,StringBuilder运行效率测试

计算生成1到100000的字符串,各自需要多少时间,计算时间的方法是用date类中的gettime()方法,注意:gettime()得到的时间是对象生成时,到1970年1月1日0点的毫秒数,并不是方法调用时的毫秒数。源码如下:package com.homework; import java.util.Date; public class TimeCeshi { public static ...

Tssit的个人博客 869

Python赋能,洞见先机:构建基于异步爬虫与流处理的实时舆情监控系统

我们将从核心概念入手,逐步搭建一个集。.option("es.resource", "public-opinion-%s" % time.strftime("%Y-%m-%d")) \ # 按日期分索引。| 数据采集层 |----->| 消息队列层 |----->| 流处理与分析层 |----->| 存储与可视化层 |:使用Spark Streaming的状态操作或Flink的CEP库,检测更复杂的模式,如“某关键词的负面舆情在1小时内激增500%”。

2201_76125261的博客 434

yolov8知识蒸馏代码详解:支持logit和feature-based蒸馏

特别地,在COCO数据集上对MAP中的RetinaNet检测器(resnet50主干)获得了3.4%的性能提升,在Cityscapes数据集上, 针对mIoU指标,PSPNET(resnet-18 backbone)获得5.81%的性能提升。大部分的KD方法都是通过algin学生网络和教师网络的归一化的feature map, 最小化feature map上的激活值的差异。MGD是一种真正通用的基于特征feature的知识蒸馏方法,它可以用于各种任务,包括图像分类,目标检测,语义分割和实例分割。

@bangbang的博客 7286

关于String和StringBuilder、StringBuffer的一个简单性能测试

关于String和StringBuilder、StringBuffer的一个简单性能测试 String a=String b + String c + String d 这种代码在程序里应该随处可见,一部分人不知道这段代码的缺陷在哪,另一部分人知道这样写不好,但是太顺手了下意识就写了。 在Java里,String是个不可变对象,所以右边的每次赋值操作都会new一个新对象,b+

浪迹天涯的专栏 1123

【深度学习】Progressive Distillation for Fast Sampling of Diffusion Models

这种方法通过迭代地将一个需要较多步骤的模型(称为教师模型)蒸馏成一个需要较少步骤的学生模型,每次迭代都将采样步骤减半,直到达到所需的采样步骤数量。通过渐进式蒸馏,论文将原始需要8192步采样的模型成功蒸馏为只需4步采样就能取得接近的生成质量的新模型,大幅提高了扩散模型的推理效率。这篇论文提出了一种"渐进式蒸馏"(Progressive Distillation)的方法,来大幅降低用于生成对抗网络(GAN)的扩散模型(Diffusion Model)在推理阶段的采样步数,从而提高其推理效率。

q742971636的博客 1788

String StringBuffer StringBuilder性能测试

测试代码public class TestString { public static void main(String[] args) { long start = System.currentTimeMillis(); testString(); System.out.println("String 耗时:"+ (System.currentTimeMillis() - st...

weixin_30653097的博客 162

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

分析String、StringBuilder、StringBuffer的区别,内存划分以及性能测试

一、String 1.1 创建String String两种创建方式 String str = "zbx"; // zbx 存储在常量池中,常量池在方法区中 String str2 = new String("java"); // java 存储在堆中 1.2 多个字符串的内存分析 创建字符串 创建一个字符串 String name1 = "zbx"; 引用存放在栈中,值存放在常量池中 new 一个字符串 String name2 = new String("bao"); 引用存放在栈中,.

她的坏机器人 1070

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

String StringBuilder StringBuffer 性能测试

public static void main(String[] args) { StringBuilder sbl = new StringBuilder(); StringBuffer sbf = new StringBuffer(); String str = ""; long t1 = new Date().getTime(); /** * S...

caizi0413的博客 146

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Java--字符串String和StringBuffer、StringBuilder区别分析

一、定义 1、String 字符串常量 2、StringBuffer 字符串变量(线程安全) 3、StringBuilder 字符串变量(非线程安全) 二、区别 1、String和StringBuffer (1)String是不可变的对象,字符串内容改变会生成全新的对象,同时对象引用会重新指向新对象,字符串内容改变容易产生很多无引...

JustinQin 1204

【Java】String StringBuffer与StringBuilder(实操+面试+记忆方法)

面试常见问题,记忆方式与实操加深理解

麻辣香蝈蝈的博客 1829

java字符串stringbuffer_Java字符串操作类学习笔记:String、StringBuffer、StringBuilder

字符串或串(String)是由数字、字母、下划线组成的一串字符。一般记为 s=“a1a2···an”(n>=0)。字符串是编程语言中表示文本的数据类型,在程序设计中,字符串(string)为符号或数值的一个连续序列,如符号串(一串字符)或二进制数字串(一串二进制数字)。在C语言中没有字符串类型,用字符数组处理字符串。类似的,Java也没有一个字符串类型,其字符串是以 String 类型的对象...

weixin_29171087的博客 382

String,Stringbuilder,Stringbuffer的区别

String,Stringbuilder,Stringbuffer的区别

Wdoing的博客 1891

探秘Java中String、StringBuilder以及StringBuffer(万字长文)

相信String这个类是Java中使用得最频繁的类之一,并且又是各大公司面试喜欢问到的地方,今天就来和大家一起学习一下String、StringBuilder和StringBuffer这几个类,分析它们的异同点以及了解各个类适用的场景。

YonminMa的博客 1080

String、StringBuilder、StringBuffer类之间的区别与联系

String是immutable类,则每次对String操作都会产生新的String对象,这样效率十分底下,而且浪费内存。 StringBuffer是可变的类和线程安全的字符串操作类,任何对它指向的字符串操作都不会产生新的对象。 StringBuilder类与StringBuffer类的功能基本相同。 下面我们来具体阐释一下三种类的用法: 1、String类: String类是不可变的类

Jeff Li 1308
上一篇: 老紫竹的华为面试之旅
下一篇: Hashtable 和 HashMap的区别
老紫竹
博客等级 码龄19年 1万+粉丝 1252原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值