Java—使用多个方法时的性能考虑
我有一个非常复杂的java类,其中有60多个小助手方法,用于方便阅读和理解。只是想知道,你认为在一个类中有这么多方法会以任何方式影响性能吗Java—使用多个方法时的性能考虑,java,performance,Java,Performance,我有一个非常复杂的java类,其中有60多个小助手方法,用于方便阅读和理解。只是想知道,你认为在一个类中有这么多方法会以任何方式影响性能吗 class MyClass() { //Some static final variables MyInnerClass m = loadAllVariables(); private void update(){ } ... //All 60 methods come here .
class MyClass() {
//Some static final variables
MyInnerClass m = loadAllVariables();
private void update(){
}
...
//All 60 methods come here
....
private MyInnerClass loadAllVariables() {
MyInnerClass m = new MyInnerClass();
//load all variables with pre-initialized values
}
private MyInnerClass() {
int a, b, c; //In reality, I have over 20 variables
}
}
不,一个方法中的方法数并不重要。只有使用的方法才是真正加载的。如果您有数千种方法,那么对于开发人员来说,这很可能是一个问题
保持代码简单明了更有可能提高性能。不。方法中方法的数量无关紧要。只有使用的方法才是真正加载的。如果您有数千种方法,那么对于开发人员来说,这很可能是一个问题
保持代码简单明了更有可能提高性能。性能不会受到太大影响。只要确保你没有实现上帝反模式
从工程的角度来看,其他开发人员在复杂的内部类层次结构中导航可能会感到困惑。性能不会受到太大影响。只要确保你没有实现上帝反模式 从工程的角度来看,其他开发人员在复杂的内部类层次结构中导航可能会感到困惑。这取决于 首先,正如Peter Lawrey所说,只是你在回答中使用的方法需要一些时间。例如:
public void update(){
if (sth) methodA();
else if(sth other) methodB();
else if(sth other) methodC();
}
在上面的示例中,始终会调用一个方法
仅此而已,这取决于您的平台。如果你是为桌面开发的,60种方法毫无意义,除非你使用成千上万的方法。但是如果你在Android上开发,一个更新函数的60种方法确实是一个大问题。这就是为什么许多专家说不应该在移动平台上使用Getter/Setter。当然,这项工作将重新设计模式:这就是为什么在移动平台上开发时,您将在性能和维护之间做出艰难选择的原因。这意味着您的代码将清晰易读
希望你明白:这要看情况了
首先,正如Peter Lawrey所说,只是你在回答中使用的方法需要一些时间。例如:
public void update(){
if (sth) methodA();
else if(sth other) methodB();
else if(sth other) methodC();
}
在上面的示例中,始终会调用一个方法
仅此而已,这取决于您的平台。如果你是为桌面开发的,60种方法毫无意义,除非你使用成千上万的方法。但是如果你在Android上开发,一个更新函数的60种方法确实是一个大问题。这就是为什么许多专家说不应该在移动平台上使用Getter/Setter。当然,这项工作将重新设计模式:这就是为什么在移动平台上开发时,您将在性能和维护之间做出艰难选择的原因。这意味着您的代码将清晰易读
希望您明白:可能是您需要使用的。这是解决这些问题的常用方法
关于一个类中的许多方法-我了解到我读到的所有内容,JVM将额外优化您的代码、内联方法等。可能是您需要使用的。这是解决这些问题的常用方法
关于一个类中的许多方法-我了解到我读到的所有内容,JVM将额外优化您的代码,将内联方法等等。对不起,各位,答案是错误的,或者没有解决真正重要的问题 上面类中的所有方法都是私有的。这意味着不存在多态性,JVM可以直接调用该方法,而不是通过invoke dynamic。私有意味着最终的
此外,所有微小的方法都通过JIT内联。因此,没有性能差异。对不起,各位,答案是错误的,或者没有解决真正重要的问题 上面类中的所有方法都是私有的。这意味着不存在多态性,JVM可以直接调用该方法,而不是通过invoke dynamic。私有意味着最终的
此外,所有微小的方法都通过JIT内联。因此,没有性能差异。请记住,编译后,情况不会保持不变……请记住,编译后,情况不会保持不变。。。