2011-02-08 7 views
2

"リクエストスコープ"グローバルについてここでいくつかの質問に回答しましたが、特に何かを選択したいと思っていて、1つまたは2つの余分な啓発を絞っていますあなたの。辞書の検索効率とASP.NETのスコープ付きグローバル変数の要求global.asaxとpages/etcでアクセス可能

私はASP.NET C#Webサイトと静的オブジェクトオブジェクト(アプリケーション開始時に一度DBからロードされます)を持っています。各ページのリクエストは、(リクエストurl/etcから得られたキーに基づいて)ディクショナリでルックアップを行い、適切なオブジェクトを取得する必要があります。

問題は、要求ごとに辞書への参照を減らすことで効率を最大化しようとしています。ページ内で単一のルックアップを実行するだけで十分ですし、オブジェクトをサブコントロールなどに渡すこともできますが、global.asaxはページとは別のもので、オブジェクト(Application_BeginRequestとSession_Start)を使用する必要があります。

辞書検索は、Application_BeginRequestで一度、Session_Startに1回(必要な場合)、毎秒多くのリクエストがあっても無視されるように、ページでは一度も無視されます。

私は簡単に呼び出すことができる要求スコープのグローバル変数を持つことができれば嬉しいです。しかし、HttpContext.Current.Itemsとそれ自体が辞書です。

私は効率性について懸念して、ばかばかしいですか?ますます多くのリクエストが行われている場合、これらのミリ秒(ナノ秒か?

ありがとうございました。

PS。私は現在、ディクショナリに約100個のオブジェクトしかありませんが、これは将来的に増加する可能性があります。

答えて

2

辞書検索は(大まかに)一定時間の操作ですので、はい、私はあなたがここで過度に最適化しようとしていると思います。

いつもパフォーマンスが問題になっている場合、のプロファイリング(tools availableがあります)の前に、マイクロ最適化を実行してください。そうしないと、アプリケーションの間違った部分を最適化するための時間が無駄になります。

+0

あなたは私が言っていることをより良く説明しました:D –

+0

シンプルだけど甘い、それは私が知る必要があったと思います。ありがとう。 (また、Davideへの賞賛、あなたはお互いにはあまりにも速いです:P) – devlop

2

私はそれをさらに最適化しようとする価値はないと思います。ディクショナリが超高速検索メソッド(ツリー、btreeなど)で実装されていると想像してください。

実際に100,200、または10.000のオブジェクトがある場合、キーで検索するときに適切な値を見つけるのにはほとんど効果がありません。

関連する問題