【发布时间】:2009-03-10 16:36:22
【问题描述】:
我分析了我的代码,发现实现Comparable<T> 的类在
compareTo(Object)
比在
compareTo(T)
我认为速度变慢是因为此方法的虚拟表查找。
有没有办法强制静态调用函数?(就像在非虚拟 C++ 方法中一样)
我仍然想使用Comparable<T> 接口,因为我将TreeSet 与此对象一起使用,并且我不想重写此代码。
编辑:不,我没有实现 compareTo(Object) - 这是由分析器自动生成和报告的
【问题讨论】:
-
而且这两个 compareTo 是完全一样的,除了强制转换?
-
通常会有一个桥接方法,compareTo(Object) 调用 compareTo(ThisConcreteType)。大概后者几乎什么都不做。 -server 可能有助于内联。
-
完成了粗略的性能计算?
-
桥接方法应该由编译器自动生成,因为实现 Comparable
只需要您编写 compareTo(T) 方法。 -
是的,但是桥接方法仍然会被执行并出现在分析器中。
标签: java performance comparable virtual-functions