Java性能运行时泛型
我想知道当您实现一个返回类型的方法时,在实现一个返回硬编码getKind的方法和一个在实例化过程中传入的Class.Class之间,是否存在任何显著的运行时性能差异Java性能运行时泛型,java,performance,Java,Performance,我想知道当您实现一个返回类型的方法时,在实现一个返回硬编码getKind的方法和一个在实例化过程中传入的Class.Class之间,是否存在任何显著的运行时性能差异 硬编码性能: public static class HardcodedFoo { public Class<Integer> getKind() { return Integer.class; } } 公共静态类HardcodedFoo{ 公共类getKind(){ 返回I
public static class HardcodedFoo {
public Class<Integer> getKind() {
return Integer.class;
}
}
公共静态类HardcodedFoo{
公共类getKind(){
返回Integer.class;
}
}
public static class Foo<E> {
private final Class<E> kind;
public Foo(final Class<E> kind) {this.kind = kind;}
public Class<E> getKind() {
return kind;
}
}
公共静态类Foo{
私人最终类;
public Foo(最终类种类){this.kind=kind;}
公共类getKind(){
回报类;
}
}
所涉及的内存访问可能会增加一些时间,但由于此时已访问了报头,因此访问中的其他字段可能位于一级缓存中。即,通常会增加~1ns。作为简短回答,不是真的。评估性能影响的最佳方法是查看字节码或对大量数据进行计时循环中的实例化-但它不太可能成为实际应用程序或算法中的瓶颈。我认为你在最后一段是对的(尽管我不是100%确定)。一个简单的getter和它用来存储引用的空间,对于模拟具体化泛型来说,可能比为每个变量加载单独类的方法要便宜得多。