JAVA服务器端性能优化----String

String的连接

方法1 使用+=

String s = new String();

for (int i = 0; i < 10000; i++){

s+= "a";

}

方法2 使用带缓冲区的StringBuffer

StringBuffer s = new StringBuffer();

for (int i = 0; i < 10000; i++){

s.append("a")

}

方法1执行时间大概在2000ms左右,方法2却只要10ms左右。

s+= "a" 实际上被转换成了

s = (new StringBuffer()).append(s).append(“a”).toString();

反复多次的创建新对象,自然会消耗更多的时间

注意:像 s = “a” + “b” + “c” 这样的语句,切勿写成 s = “a” ; s += “b”; s += “c”; 不然又要多消耗很多时间。s = “a” +“b” + “c” 本身会被编译为s = _-temp,而__temp = “abc”.

当然,如果因为程序要求s 是由三个变量a,b,c连接而成,那么请使用s = a + b + c 而不是s = a; s += b; s += c;

String的比较

假设有两个字符串a,b,现在需要忽略大小写来比较

方法1

ic_a = a.toUpperCase();

ic_b = b.toUpperCase();

a.equals(b);

方法2

a.equalsIgnoreCase(b);

方法1的执行时间会远远大于方法2

还是这两个字符串a,b,下面给定5种情况

情况1

a = "he" + "llo"

b = "hello"

使用a.equals(b);来比较

情况2

a = "hellO"

b = "hello"

使用a.equals(b);来比较

情况3

a = "hello1"

b = "hello"

使用a.equals(b);来比较

情况4

a = "hellO"

b = "hello"

使用a. equalsIgnoreCase (b);来比较

情况5

a = "hello1"

b = "hello"

使用a. equalsIgnoreCase (b);来比较

执行时间会是 情况4>情况2 >情况3 >情况5 >情况1. 情况1中,由于编译器的优化,a和b实际上指向同一个字符串,比较速度自然快。情况2需要比较到最后一个字符才知道不同,因此时间长。而情况4比较的维度比2更多,因此时间还要长。而情况3,5由于两个字符串的长度不一样,也可以比较快的比较出结果,但是会略慢于情况1。为什么情况5会比情况3快一点呢,是因为equalsIgnoreCase检查长度的步骤比equals中早一点。

JAVA服务器端性能优化----String,码迷,mamicode.com

时间: 2024-10-14 10:34:45

JAVA服务器端性能优化----String的相关文章

Java 的性能优化

jvm 中的方法区: 永久区---存的类的信息.方法.常量 .静态变量 1.Java的性能优化 1.减少gc的压力,优先级比较低的线程,他是一个守护线程 回收我们的堆内存. 2.尽量的避免我们的new操作 1.String,StringBuffer,StringBuilder String 不可变长度的类 一个不可变字符数组. 2.for foreach while 迭代器. foreach 后面的类型  数组 和    这个效率是最慢的  在以后的代码中最好使用 for 循环 3.尽量使用基本

[JAVA] java程序性能优化

一.避免在循环条件中使用复杂表达式 在不做编译优化的情况下,在循环中,循环条件会被反复计算,如果不使用复杂表达式,而使循环条件值不变的话,程序将会运行的更快. 例子: import java.util.vector; class cel { void method (vector vector) { for (int i = 0; i < vector.size (); i++) // violation ; // ... } } 更正: class cel_fixed { void metho

Java 代码性能优化总结

35 个 Java 代码性能优化总结 前言 代码优化,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是,吃的小虾米一多之后,鲸鱼就被喂饱了.代码优化也是一样,如果项目着眼于尽快无BUG上线,那么此时可以抓大放小,代码的细节可以不精打细磨:但是如果有足够的时间开发.维护代码,这时候就必须考虑每个可以优化的细节了,一个一个细小的优化点累积起来,对于代码的运行效率

Java程序性能优化:代码优化

现在计算机的处理性能越来越好,加上JDK升级对一些代码的优化,在代码层针对一些细节进行调整可能看不到性能的明显提升, 但是我觉得在开发中注意这些,更多的是可以保持一种性能优先的意识,对一些敲代码时间比较短的同学挺有意义的. 一 循环条件下,循环体和判断条件中,都要避免对使用复杂表达式,减少对变量的重复计算 1.在循环中应该避免使用复杂的表达式. 在循环中,循环条件会被反复计算,应该避免把一些计算放在循环进行的部分中,程序将会运行的更快.比如: for(int i=0;i<list.size();

Java程序性能优化——设计优化

原文出自:http://blog.csdn.net/anxpp/article/details/51914119,转载请注明出处,谢谢! 1.前言 OK,之前写了一篇文章:"23种设计模式介绍以及在Java中的应用"详细介绍了如何将设计模式应用到Java编程中,而本文旨在介绍如何利用他们优化我们的程序,使其性能更佳. 设计模式的详细介绍请参照上面链接中的文章,不是本文的重点. 而Java程序的性能优化,不一定就仅仅是以提高系统性能为目的的,还可能是以用户体验.系统可维护性等为目的. 2

Java的性能优化

http://www.toutiao.com/i6368345864624144897/?tt_from=mobile_qq&utm_campaign=client_share&app=news_article&utm_source=mobile_qq&iid=4452590055&utm_medium=toutiao_android Java的性能优化 万能的乐乐老师 2016-12-26 17:54 Play Video 做Java基础的朋友可以加群:15449

java程序性能优化之找出内存溢出元凶

我曾经在刚入行的时候做过一个小的swing程序,用到了java SE,swing,Thread等东东,当初经验少也没有做过严格的性能测试,布到生产环境用了一段时间后发现那个小程序有时候会抛java.lang.OutOfMemoryError异常,就是java的内存溢出.当时也上网查了不少资料,试过一些办法,代码也稍微做了些优化,但是有一个问题我始终是找不到解决的方案 - 不知为什么子窗体关闭后java的垃圾回收机制无法回收其资源,因为这个程序可能要经常开关一些子窗体,那么这些子窗体关闭后无法释放

《Java程序性能优化》学习笔记 Ⅱ程序优化

这一部分主要介绍代码层的优化.了解如何编写高效而精炼的代码,正确的使用函数方法.1.字符串优化处理Java语言中,String对象可以认为是对char数组的眼神和进一步封装.它主要由3部分组成:char数组.偏移量和String的长度.String对象的三个基本特点:不变性,针对常量池的优化,类的final定义. 不变性:是指String对象一旦生成,不能再对它进行改变,即immutable模式.不变模式的作用在于当一个对象需要被多线程共享,并且访问频繁时,可以省略同步和所等待的时间,大幅提高系

Java GC 专家系列5:Java应用性能优化的原则

本文是GC专家系列中的第五篇.在第一篇理解Java垃圾回收中我们学习了几种不同的GC算法的处理过程,GC的工作方式,新生代与老年代的区别.所以,你应该已经了解了JDK 7中的5种GC类型,以及每种GC对性能的影响. 在第二篇Java垃圾回收的监控中介绍了在真实场景中JVM是如何运行GC,如何监控GC数据以及有哪些工具可用来方便进行GC监控. 在第三篇GC 调优中基于真实案例介绍了可用于GC调优的最佳选项.同时也描述了如何通过降低移动到老年代中对象的数量来缩短Full GC耗时,以及如何设置GC类