C# 文字列Boolean変換処理で「Convert.ToBoolean」と「Boolean.TryParse」のパフォーマンスを計測して比較する

  • 作成日 2023.02.06
  • C#
C# 文字列Boolean変換処理で「Convert.ToBoolean」と「Boolean.TryParse」のパフォーマンスを計測して比較する

C#で、文字列Boolean変換処理を「Convert.ToBoolean」と「Boolean.TryParse」のそれぞれで実行したパフォーマンスを計測して比較するコードと結果を記述してます。「Boolean.TryParse」のわずかに速そうです。

環境

  • OS windows11 pro 64bit
  • Microsoft Visual Studio Community 2022 Version 17.2.3

パフォーマンス計測

「System.Diagnostics.Stopwatch」を使用して、文字列Boolean変換処理で「Convert.ToBoolean」と「Boolean.TryParse」を100万回実行して、計測した結果を比較してみます。

using System;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {

            var time = new System.Diagnostics.Stopwatch();

            int n = 1_000_000;

            string txt = "true";
            Boolean a,b;
            TimeSpan ts;

            // 計測開始
            time.Start();

            for (int i = 0; i < n; i++)
            {
                a = Convert.ToBoolean(txt);
            }

            time.Stop();

            ts = time.Elapsed;

            System.Diagnostics.Debug.WriteLine($"Convert.ToBoolean : {time.ElapsedMilliseconds}ms");


            // 計測開始
            time.Reset(); // リセット
            time.Start();

            for (int i = 0; i < n; i++)
            {
                Boolean.TryParse(txt, out b);
            }

            time.Stop();

            ts = time.Elapsed;

            System.Diagnostics.Debug.WriteLine($"Boolean.TryParse : {time.ElapsedMilliseconds}ms");

        }
    }
}

実行結果をみると「Boolean.TryParse」の方が微妙に良さそうです。

【1回目】
Convert.ToBoolean : 11ms
Boolean.TryParse : 9ms

【2回目】
Convert.ToBoolean : 11ms
Boolean.TryParse : 9ms

【3回目】
Convert.ToBoolean : 11ms
Boolean.TryParse : 9ms