Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java函数调用性能优化_Java_Algorithm_Inheritance - Fatal编程技术网

Java函数调用性能优化

Java函数调用性能优化,java,algorithm,inheritance,Java,Algorithm,Inheritance,我有一个名为HugeClass的类,其中定义了公共方法addButton() public class HugeClass{ public void addButton(){ etc... } public HugeClass getHugeClass(){ etc... } ...lots of big number crunching logic... } 有一个名为myController的类,它调用getHugeClass() 我们的客户希望我们不要在printControlle

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

public class HugeClass{

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

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

}
有一个名为
myController
的类,它调用
getHugeClass()

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


我正在考虑将
HugeClass
扩展到
printHugeClass
,然后在
printController
中调用它。性能会更好吗,还是会相同,因为它正在以某种方式调用原始的
HugeClass
,并且必须同时运行整个父类?

或者
addButton
需要一个正确构造的
HugeClass
实例,您无法避免它(子类化不会有什么区别)

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


cf.(单一责任原则)。

这完全取决于以下事实:
pritnController
需要
getHugeClass()
的以下语句

..lots of big number crunching logic...

如果您可以避免这些语句,那么扩展
HugeClass
将解决您在重写
getHugeClass()

时遇到的问题
addButton()
在多大程度上依赖于
HugeClass
的其余部分?如果类变得如此庞大,那么重构它并移动
addButton()所需的部分可能是值得的
到另一个新类中。

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


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

addButton()
也被其他控制器类使用,它们也调用
getHugeClass()
hmm,是的
printController
将只使用
HugeClass
中的
addButton()
函数,而不会使用其他庞大的数字运算逻辑。。。
..lots of big number crunching logic...