0

type casting遅いと聞きました。comparison速いと思っていたのに…

IComparable.CompareTo(object y)を使用するcast必要があるようです。これにより、利用可能なものがない場合x > yと同じくらい遅くなります。y as MyClassIComparable<T>

だから、私はそれを言うのは正しいですか:

キャストする必要がないため、常に実装する方が良いIComparable<T>ですか?IComparable

アップデート

boxing2 つの参照型間の型キャストよりもはるかに遅いですか?

4

2 に答える 2

1

パフォーマンスの観点からは、これらのインターフェイスのジェネリック バージョンを実装することを常にお勧めします。これは、このタイプのシナリオで最大のパフォーマンス キラーである値の型のボックス化を回避できることを保証するためです。

ジェネリック バージョンでも実行時の型チェックを行う必要がない場合もありますが、これらのチェックによるパフォーマンスへの影響はボクシングによる影響よりも非常に小さく、実際には気づきにくいでしょう。

実装によって失うものは何もないIComparable<T>ので、結論は明らかです。失うものは何もなく、得るものもかなりある可能性があるため、常に実行する必要があります。

于 2012-10-05T11:29:27.870 に答える
0

ジェネリックを実装する方が常に良いです。パフォーマンスのためだけでなく、コンパイル時間のチェックも行われるためです。

于 2012-10-05T11:28:38.817 に答える