比较是否比类型转换慢,拳击更慢?

时间:2012-10-05 11:26:30

标签: c# casting comparison

我听说type casting很慢。我原以为comparison很快,但是......

似乎IComparable.CompareTo(object y)必须使用cast,如果没有x > yy as MyClass至少与IComparable<T>一样慢IComparable<T>可用。

所以,我说得对:

实施IComparableboxing更好,因为我们不必输入强制转换?

更新

{{1}}比两种引用类型之间的类型转换慢得多吗?

2 个答案:

答案 0 :(得分:1)

从性能的角度来看,实现这些接口的通用版本总是更好,因为它可以保证您将避免使用boxing of value types,这是此类场景中的第一个性能杀手。

同样的情况是,通用版本也不需要进行运行时类型检查,但这些检查的性能比拳击的性能要小得多,在实践中将更难注意到。

通过实施IComparable<T>看到没有任何损失,那么结论很清楚:你应该总是这样做,因为没有什么可以失去的,并且可能会获得相当多的收获。

答案 1 :(得分:0)

总是更好地实现泛型。不仅因为性能,还因为你得到了编译时检查。