听说type casting
很慢 我以为comparison
很快,但是...
似乎IComparable.CompareTo(object y)
必须使用,如果没有可用的话cast
,它x > y
至少会像不慢一样慢。y as MyClass
IComparable<T>
那么,我这样说是否正确:
实现总是IComparable<T>
比IComparable
因为我们不必键入强制转换更好?
更新
boxing
比 2 个引用类型之间的类型转换慢得多吗?
听说type casting
很慢 我以为comparison
很快,但是...
似乎IComparable.CompareTo(object y)
必须使用,如果没有可用的话cast
,它x > y
至少会像不慢一样慢。y as MyClass
IComparable<T>
那么,我这样说是否正确:
实现总是IComparable<T>
比IComparable
因为我们不必键入强制转换更好?
boxing
比 2 个引用类型之间的类型转换慢得多吗?
从性能的角度来看,实现这些接口的通用版本总是更好,因为它可以保证您将避免值类型的装箱,这是这种情况下的第一大性能杀手。
通用版本也不需要进行运行时类型检查,但这些检查对性能的影响远小于装箱,并且在实践中更难注意到。
看到通过实施没有任何损失,IComparable<T>
那么结论很清楚:您应该始终这样做,因为没有什么可失去的,并且可能会获得相当多的收益。
实现泛型总是更好。不仅是为了性能,还因为你得到了编译时检查。