Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.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_Performance - Fatal编程技术网

Java—使用多个方法时的性能考虑

Java—使用多个方法时的性能考虑,java,performance,Java,Performance,我有一个非常复杂的java类,其中有60多个小助手方法,用于方便阅读和理解。只是想知道,你认为在一个类中有这么多方法会以任何方式影响性能吗 class MyClass() { //Some static final variables MyInnerClass m = loadAllVariables(); private void update(){ } ... //All 60 methods come here .

我有一个非常复杂的java类,其中有60多个小助手方法,用于方便阅读和理解。只是想知道,你认为在一个类中有这么多方法会以任何方式影响性能吗

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内联。因此,没有性能差异。

请记住,编译后,情况不会保持不变……请记住,编译后,情况不会保持不变。。。