C# クラスのprivate
、protected
、public
およびメソッドのパフォーマンスに違いはありますか? internal
より多くのプロセッサ時間または RAM を消費するかどうかに興味があります。
2 に答える
通常の呼び出しのパフォーマンスの違いは認識していません。呼び出し元をより慎重に検証する必要がある場合があるため、動的な呼び出しまたはリフレクションを介してアクセスする場合、より制限されたアクセスにはもう少し作業が必要になる可能性があります。通常の JIT コンパイルの場合、アクセスは CLR によって 1 回だけ検証され、その後は当然のことと見なされます。JIT コンパイル (および IL 検証) 自体が、より制限されたアクセスのためにわずかに遅くなる可能性があると思いますが、それが重要であるとは信じがたいです。
これは、私が気付いていないわずかなパフォーマンスの違いがあるとしても、どのアクセシビリティを使用するかを決定する要因にはなりません。アクセシビリティを設計の「自然な」アクセシビリティ以外のものにすることでパフォーマンス上の利点を達成できると思われる場合は、必ず前後のケースをベンチマークする必要があります。違いが確実に測定できる現実世界の状況。
同じ種類のアドバイスがあらゆる種類のマイクロ最適化に当てはまります。いずれにせよ、それが良い考えになることはほとんどなく、注意深い測定の範囲内でのみ実行する必要があります。
プライベート、プロテクト、またはパブリック メソッド間でパフォーマンスに測定可能な違いはありません。
最適化に重点を置く場合は、ボトルネックのコード部分をオブジェクト指向よりも「手続き型」にするようにしてください。それは小さな改善をするでしょう。