重新分解代码是否会影响应用程序的性能?

时间:2011-07-19 05:52:30

标签: refactoring

我对java中的编程有一定的了解。虽然我不了解编码的行业标准。我看到,人们坚持坚持设计模式。他们不断强调重构代码。虽然我可以理解重构的积极因素,但我觉得重构有时会影响性能。

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

Class Aclass{

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

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

}

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

考虑到这是我实现的初始代码段。在这种情况下,我在内存中有一个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创建一个新的Object。如果这种重构是为大型应用程序大规模完成的,那么更多的实例会在内存中累积,这肯定会影响应用程序的性能,对吧?

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

由于

2 个答案:

答案 0 :(得分:4)

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

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

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

我希望这对你有用。

答案 1 :(得分:0)

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