0

いくつかのユーザーコントロールに依存する中規模のアプリケーションがあります。

2x5 グリッドのユーザー コントロールを備えたテーブル レイアウト パネルで、3 つ以上の継承レベルがあります。アプリケーションで発生している大きな問題は、起動時間 (コールド/ウォームの両方) であることが証明されています。大きな大きなハングアップの 1 つは、このユーザー コントロール グリッドを初期化することです。

タイミング レポートによると、このフォームは初期化のために約 0.75 秒で入力されます。これを短縮することは大きな問題です。

私の質問は、これをスピードアップするために何ができるでしょうか? 同様の複雑さの InitializeComponents (すべてのウィンドウ、.net コントロール) でタイミング チェックを実行すると、結果が小さくなることがあります (<10 ミリ秒)。

編集)最終クラスを封印するなどのことが役立つかどうか疑問に思っています。

edit2) initializecomponent のタイミングを詳しく調べました。現在のマシンでは、メイン コンテナが 10 個のコンポーネントを追加します (1 ピースあたり 10 ミリ秒)。これらの各コンポーネントは、3 つのコンポーネントを追加します (10ms あたり)。10x10 + 30x10 = 700 ミリ秒。アイテムがコンテナーに追加される速度を上げられない限り、私は SOL だと思います。

4

2 に答える 2

1

ネットワークへのアクセスやデータベースからのプルなど、コントロールの開始において外部要因に依存することを行っていますか? これらにより、アプリケーションの読み込み時間が長くなる可能性があります。

ループがないかどうかも確認し、これらを減らしてみてください。

于 2009-12-07T16:57:05.160 に答える
0

関連している場合と関連していない場合がありますが、TableLayoutPanelを使用して同様の問題が発生しました。問題は、プロファイラーによって明らかにされた描画時間でした。私たちに問題を引き起こしていた組み合わせは、内部コントロールの透明性と動的なサイズ変更でした。いくつかのCreateParamsオプションを試してみましたが、残念ながら、実際に歌うためにカスタムレイアウトエンジンを作成する必要がありました。

いずれにせよ、私は間違いなくプロファイラーの無料試用版を今すぐダウンロードします。多くの場合、パフォーマンスの問題は予期しない場所にあります。パフォーマンスの差が0.0001ミリ秒になるだけで、原因と思われる場所で最適化に何時間も費やすことができます。

于 2009-12-07T17:19:33.443 に答える