[過去ログ] ふらっと C#,C♯,C#(初心者用) Part155 (1002レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
85(1): 64 (ワッチョイ 13ac-tycP) [sage] 2022/06/23(木) 18:19:33.38 ID:4fvcgSgI0(1/4) AAS
>>81何が全く違うんやねん
一般論はいいけど、それが51の言ってるAとBの差の理由になるのは何なのよっていうことじゃん?
まあそもそも51のコードにそこまでの差が出るのかどうかも今のワイは知らん立場やが
51はBのほうが速くなってるから疑問なんやろ、まあ他のコードのとこに依存ありそうで気になるな
86: 64 (ワッチョイ 13ac-tycP) [sage] 2022/06/23(木) 18:21:37.32 ID:4fvcgSgI0(2/4) AAS
>>8282(1): デフォルトの名無しさん (ワッチョイ a75f-cRYK) [sage] 2022/06/23(木) 18:02:24.84 ID:a115LlJm0(1) AAS
>>51
>>58の情報を信じて書いたけど
これで大体同じような数字が出たら>>58の通りベンチの取り方の問題のせいで出た差だと思うよ
MethodA,MethodB自体は>>72も検証してくれた通り変わらないはず
というか今MethodBのほうをどこかで使ってるんだとしたら、性能なんかより1ms以内連続して同じ値が出るような乱数でも問題無い使い方なのかを気にするべき
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
private int _random = 0;
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++;
}
private int MethodB() {
return (int)DateTimeOffset.Now.FromUnixTimeMilliseconds;
}
private void button1_Click(object sender, EventArgs e) {
Test(MethodA);
Test(MethodB);
}
}
まあ正直今どきRandom使うなとはワイも思ったw
88(1): 64 (ワッチョイ 13ac-tycP) [sage] 2022/06/23(木) 19:08:45.37 ID:4fvcgSgI0(3/4) AAS
>>87しょうもな、わからないんやろ、引っ込んでて
94: 64 (ワッチョイ 13ac-sER5) [sage] 2022/06/23(木) 21:03:40.24 ID:4fvcgSgI0(4/4) AAS
>>9090(1): デフォルトの名無しさん (ワッチョイ a702-KtZt) [sage] 2022/06/23(木) 19:45:10.46 ID:ey2ezatM0(2/4) AAS
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Running;
using System;
[MemoryDiagnoser(false)]
public class RandomBenchmark
{
[Params(10000)] public int A;
private readonly Random _random = new Random();
public int MethodA() => _random.Next(1, 100);
public int MethodB() => new Random().Next(1, 100);
[Benchmark]
public int BenchA()
{
int result = 0;
for (int i = 0; i < A; i++) result += MethodA();
return result;
}
[Benchmark]
public int BenchB()
{
int result = 0;
for (int i = 0; i < A; i++) result += MethodB();
return result;
}
public static void Main() => BenchmarkRunner.Run<RandomBenchmark>();
}
| Method | A | Mean | Error | StdDev | Allocated |
|------- |------ |------------:|---------:|---------:|----------:|
| BenchA | 10000 | 80.88 us | 0.489 us | 0.434 us | - |
| BenchB | 10000 | 1,490.26 us | 9.404 us | 8.797 us | 720,001 B |
やっぱ差異あってもその程度だよなあ
これだけで 2000ms とか差が出るのは考えにくいよなあ
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.035s