Java - 使用多种方法时的性能考虑因素

时间:2012-02-25 09:49:37

标签: java performance

我有一个非常复杂的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 
    }  
} 

5 个答案:

答案 0 :(得分:4)

没有。方法中的方法数量并不重要。只有所用的方法才真正加载。如果您有数以千计的方法,这对您(开发人员)来说更可能是一个问题

保持代码简单明了更有可能提高性能。

答案 1 :(得分:2)

性能不会受到太大影响。只要确保你没有实现上帝的反模式。

从工程角度来看,其他开发人员可能会因为复杂的内部类层次结构而导致混乱。

答案 2 :(得分:1)

您可能需要使用Extract Class。这是解决Feature Envy代码嗅觉的常用方法(这些都来自Martin Fowler's Refactoring)。

关于一个类中的许多方法 - 我重新启动我已阅读somewhere JVM将优化您的代码,内联方法等。

答案 3 :(得分:0)

依赖!!!

首先,它喜欢Peter Lawrey所说的,只是你在答案中使用的方法需要一些时间。例如:

public void update(){
 if (sth) methodA();
 else if(sth other) methodB();
 else if(sth other) methodC();
}

在上面的例子中,总是会调用一个方法。

Seconly,这取决于您的平台。如果您正在为桌面开发,那么60种方法会产生废话,除非您使用上千种方法。但是如果你在Android上开发,一个update()函数的60种方法确实是一个大问题。这就是为什么许多专家说你不应该在移动平台上使用Getter / Setter。当然,这项工作将再次反对Design pattern :))这就是为什么当您在移动平台上开发时,您将在性能和维护之间做出艰难的选择。 (这意味着您的代码将清晰易读)

希望你能清楚:)

答案 4 :(得分:0)

很抱歉,答案是错误的,或者没有解决非常重要的问题。

上述课程中的所有方法都是私有的。这意味着没有多态发生,JVM可以直接调用该方法而不是通过调用动态调用。 "私人"暗示" final"。

此外,所有小方法都被JIT内联。所以没有性能差异。