LoginSignup
0
1

More than 1 year has passed since last update.

WPF 依存関係プロパティのオーバーヘッド

Last updated at Posted at 2023-03-22

依存関係プロパティのオーバーヘッドとなる事項を調べた範囲でまとめた

整理:そもそもオーバーヘッドと何か
オーバーヘッドはある処理を行うために必要以上に必要な処理やデータを取り込んだり行うこと
例えばデータベースに対するクエリを実行する際に、必要以上のデータを読み込んでしまい、データ転送のコストが増加すること。また、プログラムで無駄な計算を行うことで、処理速度が低下すること等

依存関係プロパティに潜むオーバーヘッドとなる事項はこんなところ
登録
大量の依存関係プロパティを定義した場合、その登録プロセスがオーバーヘッドを引き起こすことがある

chatGPTさんは
依存関係プロパティが登録されると、CLR プロパティの基盤となるフィールドや、メソッド、イベントなどが内部的に作成されます。また、依存関係プロパティのインスタンスごとに、内部的に使用するメモリが必要になるため、多数の依存関係プロパティを定義する場合には、その数だけメモリ消費量が増加し、パフォーマンスに悪影響を与える可能性があります。
→多数の依存関係プロパティを定義する場合には、そのオーバーヘッドを軽減するために、プロパティの共有や継承、プロパティの分類やグループ化などの設計上の工夫が必要になります。また、不要な依存関係プロパティは定義せず、必要最小限のプロパティを定義することも大切

アドバイスまでしてくれた

初期値
依存関係プロパティの初期値が複雑である場合、その初期化処理がオーバーヘッドを引き起こす可能性があります。例えば、複数のプロパティを参照して初期値を計算する場合や、大量の初期化処理を行う場合などが該当します。

メタデータのオーバーライド
依存関係プロパティのメタデータをオーバーライドする場合、そのオーバーライドが多数存在する場合にオーバーヘッドが発生する可能性があります。例えば、多数の依存関係プロパティで同様のメタデータのオーバーライドを行う場合や、複数の派生クラスで同様のメタデータのオーバーライドを行う場合などが該当します。

大量のデータのバインディング
依存関係プロパティのメタデータをオーバーライドする場合、そのオーバーライドが多数存在する場合にオーバーヘッドが発生する可能性があります。例えば、多数の依存関係プロパティで同様のメタデータのオーバーライドを行う場合や、複数の派生クラスで同様のメタデータのオーバーライドを行う場合などが該当します。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1