河端善博 ブログ / SQL Server / PASSJ

SQL Server, .NET, PASSJ

  PASSJブログ :: ホーム :: 連絡をする :: RSS  :: ATOM :: Login
  952 投稿数 :: 112 ストーリー :: 1482 コメント :: 597 トラックバック

ニュース

Windows Live Alerts
My Yahoo!に追加
Add to Google dotnetnuke.jp
NPOPLUS.JP
MVP
PASSJ

記事のカテゴリ

過去の記事

カテゴリ

イメージギャラリ

.TEXT

INETA コミュニティ

MOM2005

MSMVP

PASSJ

SQL コミュニティ

セキュリティ TIPS

セキュリティのキホン

テスト

ブログ翻訳

多言語対応

.TEXT

INETA コミュニティ

MOM2005

MSMVP

PASSJ

SQL コミュニティ

セキュリティ TIPS

セキュリティのキホン

テスト

ブログ翻訳

多言語対応

C# にて、String と SqlString について、値を比較する方法のパフォーマンス評価をします。

■参考

■型

  • String
  • SqlString

■文字列の長さ

  • test 11 (10文字)
  • test 100 (100文字)

■パターン (Pattern)

  1. 同じ値の文字列の比較 例: "xxxxx" == "xxxxx"
  2. 最後の一文字が違う文字列の比較 例: "xxxxx" == "xxxxy"
  3. null と比較 例: "xxxxx" = null

■String 比較方法 (Operation)

  1. s1?== s2
  2. String.Equals(s1, s2)
  3. s1.Equals(s2)

■SqlString比較方法 (Operation)

  1. ss1 == ss2
  2. SqlString.Equals(ss1, ss2)
  3. ss1.Equals(ss2)
  4. String.Equals(ss1.Value, ss2.Value)

■結果

  1. String.Equals は、==, s1.Equals よりも高速
  2. SqlString は、String.Equals(ss1.Value, ss2.Value) による比較が、圧倒的に高速
  3. SqlString.Equals は、String.Equals と比較して30倍以上遅い
  4. SqlString の値が Null のとき、ss1.Value とはならない

String.Equals の速度のポイントはなんなんでしょう ?
また、SqlString の遅さは、カルチャ処理するとはいえ、注意が必要ですね

?

?

投稿日時 : 2004年5月25日 11:49

コメントを追加

# re: String, SqlString の値比較方法のパフォーマンス評価 2004/05/25 15:20 菊池
SqlString はそんなに遅かったんですねー、要注意ですね。

 パフォーマンスチェックのコードを記述するのが面倒なので、フレームワーク化してみました。
http://www.dotcs.com/2004/05/PerfCheck.htm

 良かったら使ってみてください。


# re: String, SqlString の値比較方法のパフォーマンス評価 2004/05/25 19:20 河端善博
ありがとうございます。
NUnit でできないんだろうかと、思いつつ。
参考にさせていただきます

# 文字列比較のパフォーマンス 2004/05/25 20:52 青柳臣一 blog : .NET や C# がメインの blog
sscli と IL を見ちゃいました(^^;

# 文字列比較のパフォーマンス 2004/05/25 20:54 青柳臣一 blog : .NET や C# がメインの blog
sscli と IL を見ちゃいました(^^;

# re: String, SqlString の値比較方法のパフォーマンス評価 2004/05/25 20:58 青柳 臣一
# ごめんなさい。2回トラックバックしちゃいました。

河端さんのコードだと s1 と s2 が同じオブジェクトになってると思います。別のオブジェクトにすると結果が変わってくるんじゃないかと思います。

詳細は私のとこを参照してみてください。

# re: String, SqlString の値比較方法のパフォーマンス評価 2004/05/26 10:17 河端善博
青柳さん、ありがとうございます。
さっそくプログラムを更新しました。
たしかに、instance.Equals が一番はやくなりますね

# SQL Server の日本語処理に関係する投稿の一覧 2004/06/07 19:16 河端善博の .TEXT でウェブログ
SQL Server の日本語処理に関係する投稿の一覧

# SqlString値比較は、SqlCompareOptions.BinarySort を設定しても速度アップせず 2004/06/16 13:49 河端善博の .TEXT でウェブログ
SqlString値比較は、SqlCompareOptions.BinarySort を設定しても速度アップせず

# re: PASSJ ウェブログ参照数 トップ 20 (2004/6/15 - 2004/6/29) 2004/06/30 15:21 河端善博の .TEXT でウェブログ
re: PASSJ ウェブログ参照数 トップ 20 (2004/6/15 - 2004/6/29)

コメント

タイトル:
名前:
Url:
コメント: