知识大全 Java程序性能优化(2)

Posted

篇首语:志不强者智不达,言不信者行不果。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java程序性能优化(2)相关的知识,希望对你有一定的参考价值。

Java程序性能优化(2)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  八 如果只是查找单个字符的话 用charAt()代替startsWith()

  用一个字符作为参数调用startsWith()也会工作的很好 但从性能角度上来看 调用用String API无疑是错误的!

  例子

  public class PCTS

  private void method(String s)

  if (s startsWith( a )) // violation

  //

  

  

  

  更正

  将 startsWith() 替换成 charAt()

  public class PCTS

  private void method(String s)

  if ( a == s charAt( ))

  //

  

  

  

  参考资料

  Dov Bulka Java Performance and Scalability Volume : Server Side Programming

  Techniques   Addison Wesley ISBN:

  九 使用移位操作来代替 a / b 操作

   / 是一个很 昂贵 的操作 使用移位操作将会更快更有效

  例子

  public class SDIV

  public static final int NUM = ;

  public void calculate(int a)

  int div = a / ;            // should be replaced with a >>

  int div = a / ;         // should be replaced with a >>

  int temp = a / ;

  

  

  更正

  public class SDIV

  public static final int NUM = ;

  public void calculate(int a)

  int div = a >> ;

  int div = a >> ;

  int temp = a / ;       // 不能转换成位移操作

  

  

  十 使用移位操作代替 a * b

  同上

  [i]但我个人认为 除非是在一个非常大的循环内 性能非常重要 而且你很清楚你自己在做什么 方可使用这种方法 否则提高性能所带来的程序晚读性的降低将是不合算的

  例子

  public class SMUL

  public void calculate(int a)

  int mul = a * ;            // should be replaced with a <<

  int mul = * a;         // should be replaced with a <<

  int temp = a * ;

  

  

  更正

  package OPT;

  public class SMUL

  public void calculate(int a)

  int mul = a << ;

  int mul = a << ;

  int temp = a * ;       // 不能转换

  

  

  十一 在字符串相加的时候 使用 代替 如果该字符串只有一个字符的话

  例子

  public class STR

  public void method(String s)

  String string = s + d   // violation

  string = abc + d       // violation

  

  

  更正

  将一个字符的字符串替换成

  public class STR

  public void method(String s)

  String string = s + d

  string = abc + d

  

  

  十二 不要在循环中调用synchronized(同步)方法

  方法的同步需要消耗相当大的资料 在一个循环中调用它绝对不是一个好主意

  例子

  import java util Vector;

  public class SYN

  public synchronized void method (Object o)

  

  private void test ()

  for (int i = ; i < vector size(); i++)

  method (vector elementAt(i));    // violation

  

  

  private Vector vector = new Vector ( );

  

  更正

  不要在循环体中调用同步方法 如果必须同步的话 推荐以下方式

  import java util Vector;

  public class SYN

  public void method (Object o)

  

  private void test ()

  synchronized//在一个同步块中执行非同步方法

  for (int i = ; i < vector size(); i++)

  method (vector elementAt(i));

  

  

  

  private Vector vector = new Vector ( );

  

  十三 将try/catch块移出循环

  把try/catch块放入循环体内 会极大的影响性能 如果编译JIT被关闭或者你所使用的是一个不带JIT的JVM 性能会将下降 %之多!

  例子

  import java io FileInputStream;

  public class TRY

  void method (FileInputStream fis)

  for (int i = ; i < size; i++)

  try                                       // violation

  _sum += fis read();

   catch (Exception e)

  

  

  private int _sum;

  

  更正

  将try/catch块移出循环

  void method (FileInputStream fis)

  try

  for (int i = ; i < size; i++)

  _sum += fis read();

  

   catch (Exception e)

  

  参考资料

  Peter Haggar: Practical Java Programming Language Guide

cha138/Article/program/Java/hx/201311/26547

相关参考

知识大全 Java程序性能优化-代理模式(2)

Java程序性能优化-代理模式(2)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!   

知识大全 Java程序性能优化-缓冲(Buffer)(2)[2]

Java程序性能优化-缓冲(Buffer)(2)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 Java程序性能优化-对象复用“池”(2)[2]

Java程序性能优化-对象复用“池”(2)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 Java程序性能优化-享元模式(2)[2]

Java程序性能优化-享元模式(2)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  pub

知识大全 Java程序性能优化-业务代理模式(2)[2]

Java程序性能优化-业务代理模式(2)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  i

知识大全 Java程序性能优化-缓存(Cache)(2)

Java程序性能优化-缓存(Cache)(2)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  &

知识大全 Java程序性能优化-空间换时间[2]

Java程序性能优化-空间换时间[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  publi

知识大全 Java程序性能优化-单例模式(2)

Java程序性能优化-单例模式(2)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!   

知识大全 Java程序性能优化-装饰者模式(2)

Java程序性能优化-装饰者模式(2)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!   

知识大全 Java程序性能优化-观察者模式(2)[2]

Java程序性能优化-观察者模式(2)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  图&