LoginSignup
4
2

More than 3 years have passed since last update.

【C#】Debug.WriteLineとConsole.WriteLineの速度を比べてみた

Last updated at Posted at 2020-10-17

注意

多少雑なところがあるかもしれませんがご了承ください
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です

実行結果

実行結果はこのようになりました
結果.png

10000回の平均速度は10000回を10回繰り返したうちの10000回にかかる時間です
約3.4倍遅いようです

まとめと感想

今回比較してみて思ったことはDebug.WriteLineもそこまで遅くないということです、ただ3.4倍も速度が違うので
極力Console.WriteLineを使うほうがいいと思います

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2