C# 数値の文字変換で「string.Format」と「ToString」と「+演算子」のパフォーマンスを計測して比較する
C#で、数値の文字変換処理を「string.Format」と「ToString」と「+演算子」のそれぞれで実行したパフォーマンスを計測して比較するコードと結果を記述してます。結果として「string.Format」以外を使用した方が良さそうです。
環境
- OS windows11 pro 64bit
- Microsoft Visual Studio Community 2022 Version 17.2.3
パフォーマンス計測
「System.Diagnostics.Stopwatch」を使用して、文字列の文字数カウント処理で「string.Format」と「ToString」と「+演算子」を100万回実行して、計測した結果を比較してみます。
using System;
using System.Text.RegularExpressions;
namespace ConsoleApp1
{
internal class Program
{
private const int n = 1_000_000;
static void Main(string[] args)
{
int num = 10;
string str;
var time = new System.Diagnostics.Stopwatch();
// 計測開始
time.Start();
for (int i = 0; i < n; i++)
{
str = string.Format("{0}", num);
}
time.Stop();
System.Diagnostics.Debug.WriteLine($"string.Format : {time.ElapsedMilliseconds}ms");
// 計測開始
time.Reset(); // リセット
time.Start();
for (int i = 0; i < n; i++)
{
str = num.ToString();
}
time.Stop();
System.Diagnostics.Debug.WriteLine($"ToString : {time.ElapsedMilliseconds}ms");
// 計測開始
time.Reset(); // リセット
time.Start();
for (int i = 0; i < n; i++)
{
str = Convert.ToString(num);
}
time.Stop();
System.Diagnostics.Debug.WriteLine($"Convert.ToString : {time.ElapsedMilliseconds}ms");
// 計測開始
time.Reset(); // リセット
time.Start();
for (int i = 0; i < n; i++)
{
str = num + "";
}
time.Stop();
System.Diagnostics.Debug.WriteLine($"+ : {time.ElapsedMilliseconds}ms");
}
}
}
実行結果をみると「+」と「ToString」と「Convert.ToString」を使用した方が、速そうです。
【1回目】
string.Format : 97ms
ToString : 24ms
Convert.ToString : 25ms
+ : 14ms
【2回目】
string.Format : 81ms
ToString : 12ms
Convert.ToString : 12ms
+ : 13ms
【3回目】
string.Format : 97ms
ToString : 13ms
Convert.ToString : 13ms
+ : 13ms
-
前の記事
mac 標準出力された結果をファイルに書き込む 2022.10.21
-
次の記事
windows11 エクスプローラーで表示を詳細に変更するショートカットキー 2022.10.21
コメントを書く