2009-04-01 14 views
4

私は個人的にメンテナンス性のために以下のオプション1が好きですが、私はより良いパフォーマンスを得るためにオプション2を見ることができます。オプション3はおそらく完全なゴミです。C#大きなViewState名を使用すると、パフォーマンスが低下しますか?

1. ViewState["Calendar1.SelectionMode"] = Calendar1.SelectionMode; 
2. ViewState["CSM"] = Calendar1.SelectionMode; 
3. ViewState["Calendar1_SelectionMode"] = Calendar1.SelectionMode; 

私はメンテナンスについて考えている古い学校の習慣を適用していますか?オブジェクトの数が多いときだけ重要ですか?私は非常に効率的なハッシュを使用して内部を見ることはできません。私はページの読み込み速度を上げる方法については読んだことがありますが、これはわずかな要素でもあると直接アドバイスするものはありません。すべての文献ではコンパクト型を使用し、デフォルト以外の値を取る値だけを読み込んで、データベースアクセスの読み込みよりもビューステートを優先しています。

答えて

7

オプション2を使用するとパフォーマンスは向上しますが、その差はごくわずかです。パフォーマンスの問題が発生している場合は、ボトルネックを探す最後の場所の1つになります。あなたのページで何らかのプロファイリングを実行しましたか?それが私が探し始める場所です。

+0

これは私が好きなものよりも遅く動作しますが、公式のものはありません。それは奇妙ですが、私は実際には千の文字列だけが長い名前でそこに詰め込まれているときに違いを知ることができると思う。私の家庭用PCは杭です。どんなプロファイリングツールをお勧めしますか? – ojblass

+0

ページトレースを(http://quickstarts.asp.net/quickstartv20/aspnet/doc/monitoring/pagetrace.aspx)オンにして、それがあなたに手がかりを与えるかどうか確認することができます。実際のプロファイラに関する限り、CLRプロファイラまたはAntsやDotTraceのような商用のプロファイラがあります。 – pbz

+0

プロファイリング情報へのリンクありがとうございます。私は分析をより厳密に行う必要がありますが、私の結論は実際に負荷特性に影響を与えることです。 – ojblass

4

キー名はviewstateの非表示フィールドの一部になります。粗い例:

protected void Page_Load(object sender, EventArgs e) 
{ 
    // ViewState["a"] = 1; 
    // <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" 
    // value="/wEPDwUJNzgzNDMwNTMzDxYCHgFhAgFkZCdtAzza2+uuoGpYdGLBUdCkUGe7" /> 

    // ViewState["this is a very very very very long key"] = 1; 
    // <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" 
    // value="/wEPDwUJNzgzNDMwNTMzDxYCHiZ0aGlzIGlzIGEgdmVyeSB2ZXJ5IHZlcnkgdmVyeSBsb25nIGtleQIBZGSmj9cou408+XXRLxCLKcEoLngriA==" /> 

} 

ボトムライン:多数のキーを格納している場合を除き、問題はない可能性があります。

+0

しかし、トラフィックは増加しますか? – ojblass

+0

はい、ページのサイズが大きくなります。あなたのトラフィックは増加します。 – andleer

+0

largeは任意の単語のビットです。 120と270は大きく見なされますか? – ojblass

1

パフォーマンスメトリックを使用すると、答えは実際はいです.ViewStateに入れたキーの名前は読み込みの特性に影響します。影響は厳しいものではなく、穏やかに成長するようにも見えません。

クリティカルポイントは120個のオブジェクトで正しいようでした。次の統計的相違は約270個のオブジェクトで現れた。私は、キーのサイズを変更して、Calendar.SelectionModeオブジェクトに押し込んでいることに注意してください。上記の結論に至るのに役立つ答えを選んでいます。

ベンチマーク決勝:

効果はBIGキーを使用してPAGELOAD時間である - PAGELOAD時間をSMALL KEYS

  • 0000の使用 - 0120 0.007秒
  • 0120から0270まで2.254秒
  • 0270を - 1050 2.956秒
  • 1050 - 2000 4.7873秒

結果は99秒信頼区間で0.05秒まで正確です。

関連する問題