質問

拡張メソッドを追加すると、プログラムのパフォーマンスにはいくらかかりますか?
動作しますか、それとも荷重が遅くなる可能性がありますか?
ありがとう。

役に立ちましたか?

解決

拡張メソッドを追加すると、プログラムのパフォーマンスにはいくらかかりますか?動作しますか、それとも荷重が遅くなる可能性がありますか?

パフォーマンスヒットはありません。拡張方法は本当に静的な方法です。

他のヒント

拡張法は、静的方法に適用される構文糖です。

理論的には、静的方法は非仮想的なインスタンスメソッドよりも高速です(nullを確認する必要はありません this)これは仮想インスタンスメソッドよりも高速です(呼び出す実装を検索する必要はありません)。

理論的には、最適化はこれらの違いを取り除く可能性があります。また、オブジェクトは、とにかくヌルチェック(使用方法を明示的であろうと暗黙的であろうと)を必要とするような方法でおそらく対処されるため、拡張メソッドに関しては静的に関しても誇張されています。

実際には、拡張方法が何であれ、それが拡張であろうとインスタンスであろうと、はるかに多くの影響を与える可能性があります。

非常に長い実行ループで整数拡張法を使用してこれをすばやくテストしましたが、テストした場合には、パフォーマンスが一般的に同じであることがわかりました。最適化されていないアセンブリをデバッグまたは実行するとき、拡張メソッドは私のコントロールケースの約2倍ゆっくりと実行されました。これは、これらのメソッドをインラインにすることができず、コールスタックなどを追跡する必要があるため、これは理にかなっています。

したがって、リリースの準備ができているアセンブリでは、パフォーマンスペナルティはありません。

プログラムをロードすることはプログラムの実行パスに依存しないため、ロードが遅くなりません。

ゆっくりと走るのは?拡張メソッドと非拡張法にかかった時間のみを測定すると、特定の場合は表示されます。実際に測定可能であっても、違いは重要ではないと思います。

重要な考慮事項は、常に「拡張機能が私のコードをより明確かつ理解し、維持しやすくする」ことです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top