C# アルファベットの小文字・大文字の区別なしでの比較で「Equals」と「ToLower」のパフォーマンスを計測して比較する
![C# アルファベットの小文字・大文字の区別なしでの比較で「Equals」と「ToLower」のパフォーマンスを計測して比較する](https://mebee.info/wp-content/uploads/2020/10/csharp.png)
C#で、アルファベットの小文字・大文字の区別なしでの比較処理を「Equals」と「ToLower」のそれぞれで実行したパフォーマンスを計測して比較するコードと結果を記述してます。結果は「Equals」を使用した方が良さそうです。
環境
- OS windows10 pro 64bit
- Microsoft Visual Studio Community 2022 Version 17.2.3
パフォーマンス計測
「System.Diagnostics.Stopwatch」を使用して、アルファベットの小文字・大文字の区別なしでの比較処理で「Equals」と「ToLower」を1000万回実行して、計測した結果を比較してみます。
using System;
using System.Text.RegularExpressions;
using System.Linq;
namespace ConsoleApp1
{
internal class Program
{
private const string txt = "123456789";
private const int n = 10_00_000;
static void Main(string[] args)
{
string txt1 = "HeLLo";
string txt2 = "hello";
var time = new System.Diagnostics.Stopwatch();
Boolean a, b;
// 計測開始
time.Start();
for (int i = 0; i < n; i++)
{
a = txt1.Equals(txt2, StringComparison.OrdinalIgnoreCase);
}
time.Stop();
System.Diagnostics.Debug.WriteLine($"Equals : {time.ElapsedMilliseconds}ms");
// 計測開始
time.Reset(); // リセット
time.Start();
for (int i = 0; i < n; i++)
{
b = ( txt1.ToLower() == txt2.ToLower() );
}
time.Stop();
System.Diagnostics.Debug.WriteLine($"ToLower : {time.ElapsedMilliseconds}ms");
}
}
}
実行結果をみると「Equals」を使用した方が、速そうです。
【1回目】
Equals : 9ms
ToLower : 168ms
【2回目】
Equals : 9ms
ToLower : 171ms
【3回目】
Equals : 9ms
ToLower : 161ms
-
前の記事
Dart 日付が過去の日付であるかを判定する 2022.12.07
-
次の記事
chrome デベロッパーツールを開くショートカットキー 2022.12.07
コメントを書く