性能:递归调用方法与使用条件逻辑

时间:2012-01-04 14:18:23

标签: java performance

我用变量x调用一个方法,我做了一些检查,如果某些条件为真,我必须用不同的变量值执行相同方法的一部分。

什么更有效?

  1. 再次调用该方法(递归)或
  2. 更改我的变量的值并让程序执行该方法的以下行?
  3. 在这两种情况下,我都可以使它工作,但更有效的方法是什么?

    对于第二种情况,我在顶部使用if语句。我读取了我想要的值,然后使用此值执行以下if语句。

    public void mymethod(x){
        if (con){
            x = something;
        }
        if (con2){
            //do something
        } else if(con3) {
            //do something
        }
    }
    

2 个答案:

答案 0 :(得分:4)

正如戴夫所说,你可能不应该关注这种微观优化。最好的办法是以最容易阅读和理解的方式编写代码。在我看来,最好的方法是将“做某事”部分移动到一个单独的函数中,并将其所需的所有参数传递给它。以便完成其工作。

如果你真的想谈谈效率谈话,请注意现代系统往往严重依赖缓存,因此过去常用的许多性能方法实际上并不构成改进。相反,它们会使事情恶化。

答案 1 :(得分:1)

修改 x 的值并继续执行方法更有效。原因很简单。调用函数时,必须保存调用者状态(进入堆栈),然后读取被调用方法的局部变量,从而执行被调用的方法。因此,已经在被调用的方法 myMethod 中,访问变量 x 以修改其值然后继续

会“更便宜”