知识大全 优化JAVA性能

Posted

篇首语:登山则情满于山,观海则意溢于海。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 优化JAVA性能相关的知识,希望对你有一定的参考价值。

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

  添加较小的辅助性函数      在最初版本的Swing工具包中 创建过多的Point Rectangle和Dimension对象会严重地影响程序的性能 尽管一次在一个Point或Rectangle对象中返回多个值似乎更有效率 但这样作的代价要比调用多个方法高得多 在最近的Swing版本推出之前 这个问题可以通过简单地在组件或其他类中添加一些辅助性的方法得到改善 如下所示       public int getX() return myBounds x;     public int getY() return myBounds y;     public int getHeight() return myBounds height;     public int getWidth() return myBounds width;         现在 调用程序可以在不创建临时对象的情况下得到同样的结果 如下所示       int x = ponent getX();     int y = ponent getY();     int h = ponent getHeight();     int w = ponent getWidth();         原来的getBounds()仍然可以使用 较小的辅助性函数只不过提供了一种实现同样目标的效率更高的方法 其结果是 Rectangle的接口将完全暴露在组件的接口中 当修改Swing使之支持并可以使用这些较小的辅助性函数后 其结果是 Swing中的许多操作的运行速度都比原来快了二倍 由于GUI代码对性能比较敏感 这一改进的意义是重大的       这种技术带来的负作用是对象拥有的方法更多了 而且要获取同一种信息可以有多种方法 这就使文件变得相当大而且也更加复杂了 不利于用户采用这一技术 但是 象Swing的例子显示的那样 在对性能要求比较高的情况下 这种优化技术还是十分有效的       可变性的利用      除了在组件中添加象上面讨论的getX()等具有简单数据类型值的临时函数外 Java 还使用了其他的技术来减少在AWT和Swing中的对象创建活动 在组件和其他的GUI类中添加另一种版本的getBounds() 就可以在没有创建临时对象的前提上使调用程序得到象Rectangle类型的返回值       public Rectangle getBounds(Rectangle returnVal)        returnVal x = myBounds x;        returnVal y = myBounds y;        returnVal height = myBounds height;        returnVal width = myBounds width;        return returnVal;              调用程序仍然必须创建一个Rectangle对象 不过 可以在以后的调用中重用它 如果一个调用程序反复调用许多Component对象 就可以创建一个Rectangle对象并在每个Component中使用它 需要注意的是 这一技术只适用于可变的对象类型 不可能通过这种方式减少创建String类对象       结合二家之长      一个更好的解决Point等简单类的对象创建问题的方法是使得Point类成为不可变的 然后再定义一个可变的子类 具体方法如下面的例子所示       public class Point        protected int x y;        public Point(int x int y) this x = x; this y = y;        public final int getX() return x;        public final int getY() return y;              public class MutablePoint extends Point        public final void setX(int x) this x = x;        public final void setY(int y) this y = y;              public class Shape        private MutablePoint myLocation;        public Shape(int x int y) myLocation = new MutablePoint(x y);        public Point getLocation() return (Point) myLocation;              在上面的例子中 Shape可以安全地返回myLocation的地址 因为调用程序如果试图修改这些域或调用他们的 调节器 就会返回一个出错信息 当然 调用程序仍然可以将Point转换为MutablePoint 但很明显这会带来不安全性 虽然调用程序也会得到它们所需要的返回值 )C++的开发人员会注意到 这一技术与C++中的返回一个Rectangle的常量地址(const Rectangle&)有点类似━━Java不具备这样的特性       在Java 类库中的java math BigInteger类中 一个类无需创建新的对象就返回一个 只读的 对象 MutableBigInteger类不是公开的 它只供java math类库内部使用 但由于BigInteger类中的一些方法(例如gcd())是由许多的算术操作组成的 完成这些操作而无需创建临时对象将极大地改善程序的性能 cha138/Article/program/Java/JSP/201311/19787

相关参考

知识大全 Java性能优化

Java性能优化  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Java语言特别强调准确性但可靠

知识大全 Java程序性能优化-系统优化注意事项

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

知识大全 Java程序性能优化-性能的参考指标

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

知识大全 Java程序性能优化-看懂程序的性能

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

知识大全 Java程序性能优化-木桶原理与性能瓶颈

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

知识大全 Java性能的优化(上)

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

知识大全 如何优化JAVA程序开发,提高JAVA性能

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

知识大全 Java性能优化技巧集锦

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

知识大全 漫谈Java程序的性能优化

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