我对 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/