Java函数调用性能优化

时间:2012-09-18 17:02:22

标签: java algorithm inheritance

我有一个名为HugeClass的类,其中定义了公共方法addButton()

public class HugeClass{

public void addButton(){ etc... }
public HugeClass getHugeClass(){ etc... }

...lots of big number crunching logic...

}

有一个名为myController的课程,会调用getHugeClass()

public class printController{
   ...
   myController.getHugeClass().addButton();    
}

我们的客户希望我们getHugeClass()中调用printController,因为代码很长并占用大量内存,因为它处理显示字段的逻辑前端。有更好的解决方案吗?

我正在考虑将HugeClass扩展到printHugeClass,然后在printController中调用它。性能会更好,还是会一样,因为它是在调用原始HugeClass并且必须遍历整个父类?

4 个答案:

答案 0 :(得分:2)

addButton需要一个正确构造的HugeClass实例,并且你无法避免它(子类化不会产生影响)。

或者您不需要HugeClass中包含的所有详细信息来调用addButton,也许是时候考虑将HugeClass拆分为较小的独立组件。

比照this post about SRP(单一责任原则)。

答案 1 :(得分:0)

这一切都取决于getHugeClass()需要pritnController的以下陈述。

..lots of big number crunching logic...

如果您可以避免这些陈述,那么在您覆盖HugeClass时延长getHugeClass()将解决您的问题。

答案 2 :(得分:0)

addButton()取决于HugeClass的其余部分多少钱?如果课程变得如此庞大,那么重构它并将addButton()所需的部分移动到另一个新课程中可能是值得的。

答案 3 :(得分:0)

首先,java中的类有多大并不重要,类加载器只加载一次。您的性能问题与其他问题有关,并且发现您应该使用性能分析工具。

我的建议:如果您遇到性能问题,请不要做任何假设,它可以是任何事情。当然,除非你在静态初始化块中没有逻辑,否则它与java加载类的速度无关。