C# にて、String と SqlString について、値を比較する方法のパフォーマンス評価をします。
■参考
■型
■文字列の長さ
- test 11 (10文字)
- test 100 (100文字)
■パターン (Pattern)
- 同じ値の文字列の比較 例: "xxxxx" == "xxxxx"
- 最後の一文字が違う文字列の比較 例: "xxxxx" == "xxxxy"
- null と比較 例: "xxxxx" = null
■String 比較方法 (Operation)
- s1?== s2
- String.Equals(s1, s2)
- s1.Equals(s2)
■SqlString比較方法 (Operation)
- ss1 == ss2
- SqlString.Equals(ss1, ss2)
- ss1.Equals(ss2)
- String.Equals(ss1.Value, ss2.Value)
■結果
- String.Equals は、==, s1.Equals よりも高速
- SqlString は、String.Equals(ss1.Value, ss2.Value) による比較が、圧倒的に高速
- SqlString.Equals は、String.Equals と比較して30倍以上遅い
- SqlString の値が Null のとき、ss1.Value とはならない
String.Equals の速度のポイントはなんなんでしょう ?
また、SqlString の遅さは、カルチャ処理するとはいえ、注意が必要ですね
?
?