我听说type casting
很慢。我原以为comparison
很快,但是......
似乎IComparable.CompareTo(object y)
必须使用cast
,如果没有x > y
,y as MyClass
至少与IComparable<T>
一样慢IComparable<T>
可用。
所以,我说得对:
实施IComparable
比boxing
更好,因为我们不必输入强制转换?
{{1}}比两种引用类型之间的类型转换慢得多吗?
答案 0 :(得分:1)
从性能的角度来看,实现这些接口的通用版本总是更好,因为它可以保证您将避免使用boxing of value types,这是此类场景中的第一个性能杀手。
同样的情况是,通用版本也不需要进行运行时类型检查,但这些检查的性能比拳击的性能要小得多,在实践中将更难注意到。
通过实施IComparable<T>
看到没有任何损失,那么结论很清楚:你应该总是这样做,因为没有什么可以失去的,并且可能会获得相当多的收获。
答案 1 :(得分:0)
总是更好地实现泛型。不仅因为性能,还因为你得到了编译时检查。