【问题标题】:Java - performance consideration when using multiple methodsJava - 使用多种方法时的性能考虑
【发布时间】:2012-02-25 09:49:37
【问题描述】:

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

【问题讨论】:

  • 请记住,编译后,事情不会保持不变...

标签: java performance


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    从工程的角度来看,其他开发人员在浏览您复杂的内部类层次结构时可能会感到困惑。

    【讨论】:

      【解决方案3】:

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

      关于一个类中的许多方法 - 我记得我已经阅读了 somewhere,JVM 将额外优化您的代码、内联方法等。

      【讨论】:

        【解决方案4】:

        视情况而定!!!

        首先,就像 Peter Lawrey 所说的那样,只是您在回答中使用的方法需要一些时间。例如:

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

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

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

        希望你清楚:)

        【讨论】:

          【解决方案5】:

          对不起各位,答案是错误的,或者没有解决真正重要的问题。

          上述类中的所有方法都是私有的。这意味着不存在多态性,JVM 可以直接调用该方法,而不是通过动态调用。 “私人”意味着“最终”。

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

          【讨论】:

            猜你喜欢
            • 2011-01-14
            • 1970-01-01
            • 1970-01-01
            • 2018-01-21
            • 1970-01-01
            • 1970-01-01
            • 2011-08-05
            • 2012-07-25
            相关资源
            最近更新 更多