【问题标题】:Does re-factoring of code affect the performance of an application?代码重构会影响应用程序的性能吗?
【发布时间】:2011-07-19 05:52:30
【问题描述】:

我对 Java 编程有一些不错的了解。虽然我不知道编码的工业标准。我看到,人们坚持坚持设计模式。他们不断强调重构代码。虽然我能理解重构的好处,但我觉得重构有时会影响性能。

例如:考虑一下我不重构代码的这种情况。

Class Aclass{

    function one(){
    ........
    two();
    }

    function two(){
    ........
    }

}

Class MainClass{
    main(){
    Aclass obj = new Aclass();
    obj.one();
    }
}

考虑到这是我实现的初始代码 sn-p。在这种情况下,我在内存中有一个 Aclass 对象,函数一调用函数二。所有这些都发生在一个 Aclass 实例的范围内。

假设如果我重构代码并将函数二转移到另一个类 Bclass。代码可能如下所示:

Class Aclass{

        function one(){
        ........
        Blass bclass = new Bclass();
        bclass.two();
        }
}

Class Bclass{
        function two(){
        .....
        }
}


Class MainClass{
    main(){
    Aclass obj = new Aclass();
    obj.one();
    }
}

当我像上面那样重构代码时,我可能需要为 Bclass 创建一个新对象。如果对大型应用程序进行大规模的这种重构,内存中会积累更多的实例,这肯定会影响应用程序的性能,对吧?

那么根据上面显示的示例,这是否意味着重构(可能)会影响应用程序的性能?或者如果我的假设有误,请告诉我如何在编程中处理这个问题?

谢谢

【问题讨论】:

    标签: refactoring


    【解决方案1】:

    重构确实会影响性能,但并不总是以您期望的方式。 Martin Fowler 在他的“重构:改进现有代码的设计”一书中给出了一个很好的例子。在这个例子中,将一个循环分成两个实际上提高了性能。在重构之前,处理器必须在两个内存区域之间切换 - 在重构之后,它可以独占查看一个区域,然后独占查看另一区域,(可能)允许编译器优化。

    当性能受到关注时,我的建议是使用分析器来确定问题所在。然后你就知道应该在哪里优化你的代码了。

    无论如何要小心过早的优化。

    希望对你有用。

    【讨论】:

    • 说得好!重构可能会降低性能,但变化可能可以忽略不计。您需要平衡代码可维护性的变化与其性能的变化。我猜在大多数情况下,可维护性的提高足以抵消性能的任何下降。
    【解决方案2】:

    重构影响性能的最佳方式之一是隔离代码的慢速部分,这样您就可以将优化注意力集中在那里。优化长方法非常困难。更容易优化一个微小的方法,并且在没有更多优化时更容易看到。

    【讨论】:

      猜你喜欢
      • 2019-06-19
      • 1970-01-01
      • 2022-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多