2016-07-10 3 views
1

私は約25のコントローラ(コントローラ内のコードにいくつかの処理の助けを提供するために、主に静的な機能を備えた)多くのサポートクラスを持っている。ネットMVCプロジェクトを持っています。次に、コントローラへの呼び出しによって出力される約100のビューがあり、コントローラへの要求によってどの機能が要求されたかは異なります。ネットMVCメモリ管理とパフォーマンスImprovements-スーパービッグコントローラ

これらのコントローラのそれぞれには、数千行のコードが含まれています。私の理解は、すべての要求に対してコントローラインスタンスが作成され、これが私の懸念の原因です。コントローラへのHTTP呼び出しごとに何千ものコード行を含むオブジェクトをインスタンス化する必要がある場合、これは大きなパフォーマンス上の問題となる可能性があります。

そこで問題は、1)私の仮定は、各コントローラ・オブジェクト・インスタンスは、ソースコードの行のもの何千ものバイトコードのコピーを含むことが正しいですか? 2)コントローラーをより小さなコントローラーに分解するためにコードをより効率的にすることができますか? (古いコントローラメソッドを指すURLもブラウザ側のjavascriptで変更する必要があるため、これは重要な作業です)。 3)パフォーマンスを最適化するためのその他の提案はありますか?

ありがとうございます。

答えて

1

コードは不変です。同じタイプのインスタンス間で共有されます。さらに、未使用の型およびメソッドは、典型的にはランタイムによって全く触られていない。これは問題ではありません。

(2)は、コード品質の観点からは有用かもしれませんが、パフォーマンスの観点からは有用ではありません。

遅いものを理解するためにコードをプロファイルする必要があります。私はこの質問から、パフォーマンスに関するあなたの経験が、あなた自身の可能性のある仮説を定式化するのに十分ではないことを知ることができます。最初に例を挙げて学習する必要があります。

+0

パフォーマンスとボトルネックをより詳細に把握するために、ライブアプリケーションで使用できるプロファイラはありますか? –

+0

はい、100%の負荷をかけます。その後、デバッガを10回中断します。それは最もホットなコードで最も停止します。それ以外の場合は、購入する.NETプロファイラがあります。 – usr