#注意
多少雑なところがあるかもしれませんがご了承ください
Debug環境での話になります
Releaseでは話は変わります
#Debug.WriteLineとConsole.WriteLineとは
###Debug.WriteLine
デバッグについての情報を Listeners コレクションのトレース リスナーに書き込むメソッドです
VisualStudioでDebugに設定したときに出力の欄にLogを出したりできます
###Console.WriteLine
説明するまでもないと思いますが
コンソールにデータを出力するメソッドです
#遅いと思ったら
Debug.WriteLineは一般に遅いといわれています
あまり使いすぎるとかなり遅くなってしまいます
#検証
どのくらい遅いかをConsole.WriteLineと比べようと思いました
###検証方法
計測はそれぞれ10000回を10回繰り返した時間を計測
10000回の平均値を計算し、さらにそこから一回の速度を計算します
プログラム
using System;
using System.Diagnostics;
using System.Linq;
namespace log_speed
{
class Program
{
static void Main(string[] args)
{
long[] TempTime=new long[10];
double AvDebug,AvConsole;
Stopwatch sw = new Stopwatch();
for (int i = 0; i < 10; i++)
{
sw.Start();
for (int j = 1; j <= 10000; j++)
{
Debug.WriteLine(j + "回目");
}
sw.Stop();
TempTime[i] = sw.ElapsedMilliseconds;
sw.Reset();
}
AvDebug =TempTime.Average();
for (int i = 0; i < 10; i++)
{
sw.Start();
for (int j = 1; j <= 10000; j++)
{
Console.WriteLine(j + "回目");
}
sw.Stop();
TempTime[i] = sw.ElapsedMilliseconds;
sw.Reset();
}
AvConsole = TempTime.Average();
Console.WriteLine("Debug10000回の平均速度:" + AvDebug+ " Debug1回の平均速度:" + AvDebug/10000 + "\nConsole10000回の平均速度:" + AvConsole+ " Console1回の平均速度:" + AvConsole/10000);
Console.ReadKey();
}
}
}
変なところがあればご連絡ください
#実行
###実行環境
種類 | メーカー | パーツ名 | 個数 |
---|---|---|---|
CPU | AMD | Ryzen 5 1600 | 1 |
マザーボード | ASUS | PRIME B450M-A | 1 |
GPU | nVIDIA | GTX960 | 1 |
RAM | G.Skill | F4-2400C15-4GNT | 4 |
SSD | Samsung | 860 EVO M.2 500GB | 1 |
今回の検証ではボトルネックとなる部分は少ないと思います
IDEはMicrosoft Visual Studio Community 2019 Version 16.7.6です
対象フレームワークは**.NET Framework 4.7.2**です
10000回の平均速度は10000回を10回繰り返したうちの10000回にかかる時間です
約3.4倍遅いようです
#まとめと感想
今回比較してみて思ったことはDebug.WriteLineもそこまで遅くないということです、ただ3.4倍も速度が違うので
極力Console.WriteLineを使うほうがいいと思います