4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?