C# 通貨フォーマット処理で「ToString」と「String.Format」のパフォーマンスを計測して比較する

  • 作成日 2022.12.28
  • C#
C# 通貨フォーマット処理で「ToString」と「String.Format」のパフォーマンスを計測して比較する

C#で、通貨フォーマット処理を「ToString」と「String.Format」のそれぞれで実行したパフォーマンスを計測して比較するコードと結果を記述してます。結果は「ToString」を使用したほうが良さそうです。

環境

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

パフォーマンス計測

「System.Diagnostics.Stopwatch」を使用して、通貨フォーマット処理で「ToString」と「String.Format」を100万回実行して、計測した結果を比較してみます。

namespace ConsoleApp1
{
    internal class Program
    {

        private const int n = 1_000_000;

        static void Main(string[] args)
        {

            decimal money = 123.45M;
            string result;

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

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

            for (int i = 0; i < n; i++)
            {
                result = money.ToString("C");
            }

            time.Stop();

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


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

            for (int i = 0; i < n; i++)
            {
                result = String.Format("{0:C}", money);

            }

            time.Stop();

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


        }
    }
}

実行結果をみると「ToString」を使用した方が、速そうです。

【1回目】
ToString : 189ms
String.Format : 299ms

【2回目】
ToString : 103ms
String.Format : 166ms

【3回目】
ToString : 128ms
String.Format : 168ms