C# 真偽値のランダム生成処理で「random.NextDouble」と「random.Next」のパフォーマンスを計測して比較する
C#で、真偽値のランダム生成処理を「random.NextDouble」と「random.Next」のそれぞれで実行したパフォーマンスを計測して比較するコードと結果を記述してます。「Next」を使用したほうがパフォーマンスは良さそうです。
環境
- OS windows11 pro 64bit
- Microsoft Visual Studio Community 2022 Version 17.2.3
パフォーマンス計測
「System.Diagnostics.Stopwatch」を使用して、真偽値のランダム生成で「random.NextDouble」と「random.Next」を100万回実行して、計測した結果を比較してみます。
using System;
namespace ConsoleApp1
{
internal class Program
{
private const int n = 1_000_000;
static void Main(string[] args)
{
var time = new System.Diagnostics.Stopwatch();
bool result;
var random = new Random();
// 計測開始
time.Start();
for (int i = 0; i < n; i++)
{
result = random.NextDouble() >= 0.5;
}
time.Stop();
System.Diagnostics.Debug.WriteLine($"NextDouble : {time.ElapsedMilliseconds}ms");
// 計測開始
time.Reset(); // リセット
time.Start();
for (int i = 0; i < n; i++)
{
result = random.Next(2) == 1;
}
time.Stop();
System.Diagnostics.Debug.WriteLine($"Next : {time.ElapsedMilliseconds}ms");
}
}
}
実行結果をみると「Next」を使用した方が、速そうです。
【1回目】
NextDouble : 45ms
Next : 9ms
【2回目】
NextDouble : 9ms
Next : 10ms
【3回目】
NextDouble : 16ms
Next : 11ms
-
前の記事
sqlite テーブルを一覧で確認する 2022.12.08
-
次の記事
javascript Mapからjsonに変換する 2022.12.08
コメントを書く