などのインターフェースを使用して、任意のパフォーマンスへの影響があります:
1)基本クラスの参照
は、性能の点で優れている参照
abstract class BaseClass{}
class A : BaseClass{}
class B : BaseClass{}
static void Main(){
BaseClass objectInstance = new A();
objectInstance = new B();
}
又は
2を介してオブジェクトへの参照。 )インタフェース参照によるオブジェクトへの参照:
interface IBase{}
class A : IBase{}
class B : IBase{}
static void Main(){
IBase objectInstance = new A();
objectInstance = new B();
}
これはあなた自身をテストするために*スーパー*簡単です。おそらく、簡単なベンチマークを実行するよりも、この質問を正確に記述して書式設定するのに時間がかかりました。 –
[どちらが速いのですか?](https://ericlippert.com/2012/12/17/performance-rant/) –
このコードには何の影響もありません。重要なのは次の作業です。インタフェースメソッド呼び出しにはオーバーヘッドがあり、コールスタブを経由しなければならず、ジッタオプティマイザはメソッドをインライン化できません。 perfの違いは正確に測定するのが難しく、非常に速いコードであり、非インターフェイスメソッドを完全に消滅させることでベンチマークを乱すのはかなり簡単です。インターフェイスは構造的なデザインパターンです。あなたはそれらにオプトインしたり、それを放棄したりすることはできません。 CLRによって非常に大きく最適化されたマイクロソフトは、吸うことはありません。 –