让你的java代码性能更好.docx

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
让你的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 method (Vector vector) {????????int size = vector.size ()????????for (int i = 0; i size; i++)????????????; // ...????}}二、为Vectors 和 Hashtables定义初始大小JVM为Vector扩充大小的时候需要重新创建一个更大的数组,将原原先数组中的内容复制过来,最后,原先的数组再被回收。可见Vector容量的扩大是一个颇费时间的事。通常,默认的10个元素大小是不够的。你最好能准确的估计你所需要的最佳大小。例子:import java.util.Vector;public class DIC {????public void addObjects (Object[] o) {????????// if length 10, Vector needs to expand?????????for (int i = 0; i o.length;i++) {????????????????v.add(o);???// capacity before it can add more elements.????????}????}????public Vector v = new Vector();??// no initialCapacity.}更正:自己设定初始大小。????public Vector v = new Vector(20);??????public Hashtable hash = new Hashtable(10);?参考资料:Dov Bulka, Java Performance and Scalability Volume 1: Server-Side Programming?Techniques Addison Wesley, ISBN: 0-201-70429-3 pp.55 – 57三、在finally块中关闭Stream程序中使用到的资源应当被释放,以避免资源泄漏。这最好在finally块中去做。不管程序执行的结果如何,finally块总是会执行的,以确保资源的正确关闭。?????????例子:import java.io.*;public class CS {????public static void main (String args[]) {????????CS cs = new CS ();????????cs.method ();????}????public void method () {????????try {????????????FileInputStream fis = new FileInputStream (CS.java);????????????int count = 0;????????????while (fis.read () != -1)????????????????count++;????????????System.out.println (count);????????????fis.close ();????????} catch (FileNotFoundException e1) {????????} catch (IOException e2) {????????}????}}?????????更正:在最后一个catch后添加一个finally块参考资料:Peter Haggar: Practical Java - Programming Language Guide.Addison Wesley, 2000, pp.77-79四、使用System.arraycopy ()代替通过来循环复制数组System.arraycopy () 要比通过循环来复制数组快的多。?????????例子:public class IRB{????void method () {????????int[] array1 = new int [100];????????for (int i = 0;

文档评论(0)

wuyuetian + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档