refactoring - 代码重构是否会影响应用程序的性能?

标签 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 创建一个新的对象。如果对一个庞大的应用程序进行大规模的重构,内存中会积累更多的实例,这肯定会影响应用程序的性能,对吗?

因此,根据上面所示的示例,这是否意味着重构(可能)会影响应用程序的性能?或者如果我的假设是错误的,请让我知道如何在编程中处理这个问题?

谢谢

最佳答案

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

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

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

希望这对您有用。

关于refactoring - 代码重构是否会影响应用程序的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6742822/

相关文章:

c# - 如何避免 Code Contracts 语句中的代码重复

intellij-idea - Intellij - 标记代码块

java - 如何将对 new 的调用重构为带参数的方法调用?

c# - 使用反射按名称获取方法时如何重构?

c++ - 用于 C/C++ 剽窃检测的变量重命名

java - 如何使用不同版本参数重构同一类

Delphi:可维护性虚拟与虚拟抽象

c# - 在 WinForms 中保持对控件的全局引用以访问 GUI 线程

ruby-on-rails - 如何重构这个方法?

javascript - 为了重构一个大项目,在Javascript中声明一个对象等于它自己是否可以?