当前位置:首页 > 开发 > 互联网 > 正文

Java程序性能优化Tips

发表于: 2015-05-11   作者:cfyme   来源:转载   浏览次数:
摘要: 1,避免在循环条件中使用复杂表达式 在不做编译优化的情况下,在循环中,循环条件会被反复计算,如果不使用复杂表达式,而使循环条件值不变的话,程序将会运行的更快。如在条件循环中,使用 for (int i = 0; i < v.size(); i++) ,可以考虑使用 for (int i = 0 , j = v.size() ; i < j ; i++)。能够减少函数调用,且v.siz

1,避免在循环条件中使用复杂表达式

在不做编译优化的情况下,在循环中,循环条件会被反复计算,如果不使用复杂表达式,而使循环条件值不变的话,程序将会运行的更快。
如在条件循环中,使用 for (int i = 0; i < v.size(); i++) ,可以考虑使用 for (int i = 0 , j = v.size() ; i < j ; i++)。能够减少函数调用,且v.size()还是一个同步的方法。
对于不会再多线程同时使用的容器,可以使用 ArrayList等代替Vector

2,为容器如List或者Map指定初始大小。

在能够估算容器大小的情况下,建议在初始化容器时指定大小,以避免频繁扩容导致的性能损失
其他容器,如StringBuffer, StringBuilder也可以参考

3,在finally中关闭资源。

在finally中关闭资源,如stream,connection等,能够避免资源泄露。
另外一个易疏忽的场景是,在使用对象池时,如果borrow了一个对象,最好在finally中归还,以免因使用中的异常导致无法归还。
jdk7之后出现try-with-resources,建议使用

4,使用’system.arraycopy ()’代替通过来循环复制数组

system.array会调用本地方法进行复制,比在java里复制快得多。熟悉jdk自带的一些方法,了解apache common项目中的类库,有益于提升工作效率和程序性能。

5,在可以使用final的地方使用final,如不可变成员变量,访问实例内变量的getter/setter方法,不会被改写的方法,甚至不需要继承的类。

编译器会将final的方法内联

6,如果只是查找单个字符的话,用charat()代替startswith()

前者直接下标读取数据,性能高于后者。

7,善用移位进行乘除运算

如果恰好是2的幂的变化,使用左移或者右移性能更好

8,避免在循环中进行耗资源的操作,如try-catch或者同步

9,尽可能的使用栈变量

如果可能,请使用局部变量作为你经常访问的变量

 

转载:http://www.zhouyoudao.com/javatips/

Java程序性能优化Tips

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
现在计算机的处理性能越来越好,加上JDK升级对一些代码的优化,在代码层针对一些细节进行调整可能看
这一部分主要介绍代码层的优化。了解如何编写高效而精炼的代码,正确的使用函数方法。 1.字符串优化
本文所讲的是关于通过Java程序来找出内存溢出的原因的研究。 AD: 我曾经在刚入行的时候做过一个小
我曾经在刚入行的时候做过一个小的swing程序,用到了java SE,swing,Thread等东东,当初经验少也没
我曾经在刚入行的时候做过一个小的swing程序,用到了java SE,swing,Thread等东东,当初经验少也没
我曾经在刚入行的时候做过一个小的swing程序,用到了java SE,swing,Thread等东东,当初经验少也没
1.字符串优化 1.1. String对象的特点 1)不变性。String对象一旦生成,则不能对它进行改变。不变模式
1.字符串优化 1.1. String对象的特点 1)不变性。String对象一旦生成,则不能对它进行改变。不变模式
1.字符串优化 1.1. String对象的特点 1)不变性。String对象一旦生成,则不能对它进行改变。不变模式
1.字符串优化 1.1. String对象的特点 1)不变性。String对象一旦生成,则不能对它进行改变。不变模式
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号