在 .NET 中生成伪随机值的性能
Performance of generating pseudo-randomized values in .NET
为什么是
var random = new Random();
random.Next(0 /* or any other positive value */, int.MaxValue);
速度大约是:
的 1.5 倍
random.Next(-1, int.MaxValue);
.NET Framework (4.7.2) 是如何实现这些功能的?他们不应该有差不多的表现吗?
(通过在循环中生成 10M 值来衡量性能)
编辑:-1 和 int.MaxValue 之间的范围是否可能太大,因此必须在内部生成两个值?因为在 -1 和 int.MaxValue-1
之间生成时我看不到行为
参考 maccettura 推荐的源代码后,如果范围是 >Int32.MaxValue
,它会使用性能较低的变体。
为什么是
var random = new Random();
random.Next(0 /* or any other positive value */, int.MaxValue);
速度大约是:
的 1.5 倍random.Next(-1, int.MaxValue);
.NET Framework (4.7.2) 是如何实现这些功能的?他们不应该有差不多的表现吗?
(通过在循环中生成 10M 值来衡量性能)
编辑:-1 和 int.MaxValue 之间的范围是否可能太大,因此必须在内部生成两个值?因为在 -1 和 int.MaxValue-1
之间生成时我看不到行为参考 maccettura 推荐的源代码后,如果范围是 >Int32.MaxValue
,它会使用性能较低的变体。