我是一个初学者,我总是读到重复代码是不好的。然而,似乎为了不这样做,您通常必须进行额外的方法调用。假设我有以下课程
public class BinarySearchTree<E extends Comparable<E>>{
private BinaryTree<E> root;
private final BinaryTree<E> EMPTY = new BinaryTree<E>();
private int count;
private Comparator<E> ordering;
public BinarySearchTree(Comparator<E> order){
ordering = order;
clear();
}
public void clear(){
root = EMPTY;
count = 0;
}
}
对我来说,将 clear() 方法中的两行复制并粘贴到构造函数中而不是调用实际方法是否更理想?如果是的话,会有多大的不同?如果我的构造函数进行了 10 次方法调用,并且每次调用都只是将实例变量设置为一个值,会怎样?最佳编程实践是什么?
对我来说,将 clear() 方法中的两行复制并粘贴到构造函数中而不是调用实际方法是否更理想?
编译器可以执行该优化。 JVM 也可以。编译器作者和 JVM 作者使用的术语是“内联扩展”。
如果是的话,会有多大的不同?
测量一下。通常,你会发现这没有什么区别。如果您认为这是一个性能热点,那么您就找错地方了。这就是为什么你需要测量它。
如果我的构造函数进行了 10 次方法调用,并且每次调用都只是将实例变量设置为一个值,会怎样?
同样,这取决于生成的字节码以及 Java 虚拟机执行的任何运行时优化。如果编译器/JVM 可以内联方法调用,它将执行优化以避免在运行时创建新堆栈帧的开销。
最佳编程实践是什么?
避免过早优化。最佳实践是编写可读且设计良好的代码,然后针对应用程序中的性能热点进行优化。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)