我创建了一个名为GamblersDice 的娱乐库。我正在尝试对其进行微优化,但不确定我是否做得对。我想要的是在创建模具时使用对全局Random对象的引用。我认为它不起作用的原因是测试GamblersDie(random, int)和GamblersDie(ref random, int)花费几乎相同的时间超过 10,000,000 次迭代(测试项目在 repo 中)。如果你不想浏览 repo,这里是我的构造函数:
public class GamblersDie : Die
{
private Random _rnd;
public int[] Weight { get; private set; }
public GamblersDie() : this(new Random()) { }
public GamblersDie(int size) : this(new Random(), size) { }
public GamblersDie(params int[] weights) : this(new Random(), weights) { }
public GamblersDie(Random rnd) : this(ref rnd) { }
public GamblersDie(Random rnd, int size) : this(ref rnd, size) { }
public GamblersDie(Random rnd, params int[] weights) : this(ref rnd, weights) { }
public GamblersDie(ref Random rnd) : this(ref rnd, 6) { }
public GamblersDie(ref Random rnd, int size) {
_rnd = rnd;
Weight = new int[size];
for (int i = 0; i < Weight.Length; i++)
{
Weight[i] = 1;
}
}
public GamblersDie(ref Random rnd, params int[] weights) : this(ref rnd, weights.Length)
{
for (int i = 0; i < Weight.Length; i++)
{
Weight[i] = weights[i];
}
}
}
就像我说的,这只是为了好玩。我想对它进行微优化,只是因为它可能是可能的。我的另一个问题是关于构造函数链接。乍一看它可能令人困惑,我想知道它是否是某种反模式。
料青山看我应如是
相关分类