我对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。如果这种重构是为大型应用程序大规模完成的,那么更多的实例会在内存中累积,这肯定会影响应用程序的性能,对吧?
因此,根据上面显示的示例,是否意味着重新分解(可能)会影响应用程序的性能?或者如果我的假设错了,请告诉我如何在编程中处理这个问题?
由于
答案 0 :(得分:4)
重构确实会影响性能,但并不总是以您期望的方式。 Martin Fowler在他的“重构:改进现有代码的设计”一书中给出了一个很好的例子。在这个例子中,将一个循环分成两个实际上改进了性能。在重构之前,处理器必须在两个内存区域之间切换 - 在重构之后,它可以专门查看一个区域,然后专门查看另一个区域,(可能)允许编译器优化。
当考虑性能时,我的建议是使用分析器来确定问题所在。然后你知道应该在哪里优化你的代码。
无论如何要小心过早优化。
我希望这对你有用。
答案 1 :(得分:0)
重构影响性能的最佳方法之一是隔离代码的慢速部分,这样您就可以将优化注意力集中在那里。优化长方法非常困难。更容易优化微小的方法,并且在没有更多优化时更容易看到。