[過去ログ] ふらっと 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
81(1): デフォルトの名無しさん (ワッチョイ 2324-zXsU) [sage] 2022/06/23(木) 17:45:34.11 ID:jvSS+4eW0(2/3) AAS
>>72
全く違う
他で大きく時間使われるところがあると大数の法則的な感じで軽い部分が圧倒的母数によって覆い隠されてしまう
特にGCやシステムコールは常に一定速度とは限らないから、そういう処理を挟めば挟むほど誤差が大きくなってすぐに終わる軽微な処理差が覆い隠されてしまう
何が全く違うんやねん
一般論はいいけど、それが51の言ってるAとBの差の理由になるのは何なのよっていうことじゃん?
まあそもそも51のコードにそこまでの差が出るのかどうかも今のワイは知らん立場やが

51はBのほうが速くなってるから疑問なんやろ、まあ他のコードのとこに依存ありそうで気になるな
86: 64 (ワッチョイ 13ac-tycP) [sage] 2022/06/23(木) 18:21:37.32 ID:4fvcgSgI0(2/4) AAS
>>82
82(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
87(1): デフォルトの名無しさん (ワッチョイ 2324-zXsU) [sage] 2022/06/23(木) 18:41:00.93 ID:jvSS+4eW0(3/3) AAS
>>85
ん?5chって一般論話す場だろ
そりゃ自分でベンチ計れば結論出せるけどそんなことする義理はない一方で一般論レスするのは5秒で終わるし
しょうもな、わからないんやろ、引っ込んでて
94: 64 (ワッチョイ 13ac-sER5) [sage] 2022/06/23(木) 21:03:40.24 ID:4fvcgSgI0(4/4) AAS
>>90
90(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