2

この SO question のキャッシュに適したコードについて読んで、C# でクラスを操作するときにメソッドをオーバーライドするよりも、イベントの発生と処理の方がキャッシュに適しているかどうかを知りたいです (回答の 1 つに、仮想メソッドを避けるべきであると記載されているため、少なくとも C++ では)、または両方のアプローチよりも優れた戦略はありますか?

4

1 に答える 1

5

C# でクラスを操作するときに、メソッドをオーバーライドするよりもイベントの発生と処理の方がキャッシュに適しているかどうかを知りたい

一般的に、いいえ。イベントは、別のメモリ位置にある別のクラス インスタンスへの呼び出しを必要とします。これには、仮想メソッド呼び出しと同じ (またはおそらくさらに悪い) キャッシュの問題が発生します。

または、両方のアプローチよりも優れた戦略はありますか?

残念ながら、慣用的な C# はキャッシュに適していない傾向があります。キャッシュ フレンドリな C# コードを作成するには、通常、structoverを使用する、仮想メソッドを回避する、イベントを回避する、デリゲートclass(少なくともクロージャーを使用するもの) を回避するなどの方法が必要です。これらの問題を詳しく説明します。

于 2013-06-03T19:25:02.090 に答える