2011-12-08 8 views
1

私は以前の開発者からプロジェクトを選びました。彼のコードでは、マスターページのセッション変数にデータがロードされ、それをマスターページのローカル変数に格納して、それ。Performaceセッション変数、リクエスト文字列とローカル変数

すなわち:マスターページで

public class Master_Page 
{ 
    public string some_data = string.empty; 

    public void Page_Load() 
    { 
     some_data = Session["some_data"]; 

    } 
} 

public class Inherted_Page : Page 
{ 
    public void some_method() 
    { 
     Response.Write(((Master_Page)Master).some_data); 
    } 
} 

私はセッション変数へのアクセスは、ローカル変数よりも長くかかるので、それですかしら? それはリクエスト文字列でも同じですか?

+0

これのいくつかのコード例は役に立ちます:-) – dash

+0

、上記のようなものです:) –

答えて

1

Sessionオブジェクトにアクセスするのは、ハッシュテーブルルックアップが必要なためインスタンス変数にアクセスするよりも時間がかかります。

私は、Requestオブジェクトもハッシュテーブルを使用していると思います。

あなたがそれらをたくさんしていない限り、パフォーマンスの向上はかなり低いです。ハッシュテーブルの検索はO(1)である傾向があります。特にセッションやリクエストの典型的な小さなサイズキーのハッシュを計算するのはルックアップ自体よりも時間がかかります)。

0

このデータを保持してユーザーにフルセッションに従う必要はなく、1回の負荷でページにのみ必要な場合は、セッションデータが悪くて値を保存するのが遅く、潜在的な可能性がありますバグに。

したがって、このページの生存期間だけsome_dataを使用する必要がある場合は、マスターページから子ページにデータを転送するだけで、ページ上の変数を使用する必要があります。

セッションでユーザーに従う変数が必要な場合は、セッションデータを参照してください。