分享几个提高Java性能的高效用法

 更新时间:2014年10月21日 18:04:10   投稿:mdxy-dxy  
这篇文章主要介绍了分享几个提高Java性能的高效用法 ,需要的朋友可以参考下

1.在重要的循环里,消除循环终止判断时的方法调用

复制代码 代码如下:

for(int i=0; i<collection.size(); i++)
{
...
}
for(int i=0; i<collection.size(); i++)
{
...
}

替换为…

复制代码 代码如下:

view plaincopy to clipboardprint?
for(int i=0;n=collection.size();i<n;i++)
{
...
}

2.通常,把与循环index不相关的移到循环的外面

复制代码 代码如下:

for(int i=0;terminal=x.length;i<terminal;i++){
 X[i]=x[i]/scaleA*scaleB;
}
for(int i=0;terminal=x.length;i<terminal;i++){
X[i]=x[i]/scaleA*scaleB;
}

改为

复制代码 代码如下:

double scale = scaleB/scaleA;
for(int i=0; terminal=x.length; i<terminal; i++){
 X[i]=x[i]*scale;
}

2.字符串

消除字符串连接
创建长字符串时,总是使用StringBuffter代替String
预先分配StringBuffer空间

StringBuffer sb = new StringBuffer(5000);

3.基本数据类型

在重要的循环里使用基本数据类型(int型数据通常比long/double型数据更快)
基本数据类型(Boolean,Integer,etc)的包装类主要用在当传递的方法参数必须是一个对象的引用时(而不是一个基本数据类型)
对所有的常量代数表达式使用static final修饰符

一 使常量更容易引用(编译器预先计算常量表达式)

4.异常

异常只用于单个真正的错误条件

一 抛出一个异常和执行一个catch代码块花费是很高的(主要由于当创建一个异常时要获得线程栈的一个快照)
一 只当条件真的异常时才抛出一个异常

使编译器和运行时最优化,将几个方法调用放在一个try/catch块中,而不是为每个方法调用实现几个try/catch块

5.基准

注意,所有这些技巧会因不同的平台和虚拟机而不同

一 例如:在有些servlet容器内,通过一个OutputStream作为字节输出会更快
一 在其它的容器内,通过一个PrintWriter输出字符会更快

这些技巧描述的是最可移植的建议

你可能需要运行一些基准来判断在你的平台上怎么样是最快的

相关文章

  • java之左旋转字符串介绍

    java之左旋转字符串介绍

    java之左旋转字符串介绍,需要的朋友可以参考一下
    2013-02-02
  • Java实现随机验证码具体代码

    Java实现随机验证码具体代码

    这篇文章主要为大家详细介绍了Java实现随机验证码具体代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • Mybatis-plus基于redis实现二级缓存过程解析

    Mybatis-plus基于redis实现二级缓存过程解析

    这篇文章主要介绍了Mybatis-plus基于redis实现二级缓存过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • Java的枚举,注解和反射(二)

    Java的枚举,注解和反射(二)

    今天小编就为大家分享一篇关于Java枚举,注解与反射原理说明,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2021-07-07
  • Java编程guava RateLimiter实例解析

    Java编程guava RateLimiter实例解析

    这篇文章主要介绍了Java编程guava RateLimiter实例解析,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • Java实现Promise.all()的示例代码

    Java实现Promise.all()的示例代码

    这篇文章主要介绍了Java实现Promise.all()的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • java如何实现项目启动时执行指定方法

    java如何实现项目启动时执行指定方法

    这篇文章主要为大家详细介绍了java项目如何启动时执行指定方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • 基于Mybatis Plus实现多表分页查询的示例代码

    基于Mybatis Plus实现多表分页查询的示例代码

    这篇文章主要介绍了基于Mybatis Plus实现多表分页查询的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • java的if else语句入门指南(推荐)

    java的if else语句入门指南(推荐)

    下面小编就为大家带来一篇java的if else语句入门指南(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • IntelliJ IDEA(2019)之mybatis反向生成的实现

    IntelliJ IDEA(2019)之mybatis反向生成的实现

    这篇文章主要介绍了IntelliJ IDEA(2019)之mybatis反向生成,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10

最新评论