[過去ログ] ふらっと C#,C♯,C#(初心者用) Part155 (1002レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
48: デフォルトの名無しさん (ワッチョイ 5a01-UZ+b) [sage] 2022/06/22(水) 21:42:35.06 ID:XpS14TAH0(1/3) AAS
>>41
41(2): デフォルトの名無しさん (ワッチョイ 0b01-bS77) [sage] 2022/06/22(水) 19:03:12.67 ID:+B9FnbDA0(1) AAS
private Random _random = new Random();

void MethodA(){
var val = _random.Next(1, 100);
}

void MethodB(){
var random = new Random();
var val = random.Next(1, 100);
}

MethodAとMethodBをそれぞれループで何度も実行したとき、Bの方が圧倒的に速いのはなぜですか?
Randomオブジェクトを都度生成しているので遅そうに思えるのですが。
計測してみたけどBのほうが圧倒的に遅かった
49: デフォルトの名無しさん (ワッチョイ 5a01-UZ+b) [sage] 2022/06/22(水) 21:49:22.91 ID:XpS14TAH0(2/3) AAS
環境で最適化内容に差があったりするのかな?
コード貼っておくので計測してみて
外部リンク:dotnetfiddle.net
55
(1): デフォルトの名無しさん (ワッチョイ 5a01-UZ+b) [sage] 2022/06/22(水) 23:50:09.49 ID:XpS14TAH0(3/3) AAS
>>51
51(8): 41 (ワッチョイ 8341-643o) [] 2022/06/22(水) 22:57:40.86 ID:LVeGoA3E0(1) AAS
みなさんありがとうございます。書いたコードはこんな感じです。
.NET Framework4.8 の Form アプリで、画面にlabelを1つ置いています。
私の環境だとDebug, Releaseビルドに関わらず100倍くらいBが早いです。

public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
private Random _random = new Random();
private void Test(Func<int> func) {
var sw = Stopwatch.StartNew();
var count = 10000;
for (var i = 0; i < count ; i++) {
label1.Text = func().ToString();
Application.DoEvents();
}
sw.Stop();
Console.WriteLine($"{sw.ElapsedMilliseconds} msec");
}
private int MethodA() {
return _random.Next(1, 100);
}
private int MethodB() {
var random = new Random();
return random.Next(1, 100);
}
private void button1_Click(object sender, EventArgs e) {
Test(MethodA);
Test(MethodB);
}
}
Application.DoEvents()はずしても100倍の差が出る結果は同じなの?
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.030s