这个网站上已经存在很多性能问题,但是我发现几乎所有这些都是特定于问题且相当狭窄的问题.几乎所有人都重复这些建议,以避免过早优化.
我们假设:
我在这里寻找的是在一个关键算法中挤出最后几个百分点的策略和技巧,除此之外别无他法.
理想情况下,尝试使答案语言不可知,并在适用的情况下指出建议策略的任何缺点.
我将使用我自己的初步建议添加回复,并期待Stack Overflow社区可以想到的任何其他内容.
我是初学者,我一直都认为重复代码是不好的.但是,似乎为了不这样做,通常需要额外的方法调用.假设我有以下课程
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;
}
}
Run Code Online (Sandbox Code Playgroud)
将clear()方法中的两行复制并粘贴到构造函数中而不是调用实际方法,对我来说是否更为理想?如果是这样,它会产生多大的差异?如果我的构造函数进行了10次方法调用,每次调用只是将一个实例变量设置为一个值,该怎么办 什么是最好的编程实践?
封装方法是否有性能成本?一个非常简短,随意的例子:
public static decimal Floor(decimal value)
{
return Math.Floor(value);
}
Run Code Online (Sandbox Code Playgroud)
上面的函数会被内联吗?如果是这样,它会与从代码中调用Math.Floor()完全相同吗?在写这篇文章之前我做了谷歌.