我想知道 Java 7 中泛型类型推断的性能损失是什么。“泛型方法类型推断”成本(即this)与“泛型分配类型推断”成本(即this)是否不同?我想成本可以忽略不计,因为泛型的类型推断是在编译时完成的?
此外,就 Java 8 中的“改进的类型推断”(即this)而言(由于 lambda),这是否也会对性能造成影响?Java 8 中类型推断的性能成本与 Java 7 中的性能成本有何不同?
我意识到这些都是困难的(并且可能是信息不灵通的)问题,因此,欢迎任何意见。
“泛型方法类型推断”成本(即this)与“泛型分配类型推断”成本(即this)是否不同?
不。
我想成本可以忽略不计,因为泛型的类型推断是在编译时完成的?
由于这个原因,成本为零,除非您计算编译时间。
此外,就 Java 8 中的“改进的类型推断”(即 this)而言(由于 lambda),这是否也会对性能造成影响?
这也是零。没有关于它的“也征收性能损失”。
如您所想,泛型在编译期间被删除,之后只有纯(非泛型)类。
Java 7 中的类型推断执行起来非常简单(当然仍在编译期间),因此它根本不会影响性能。
普通方法类型推断和构造函数类型推断(所谓的“钻石”)几乎相同,成本也应该相同。
类型推断仅在编译时完成。
Java 7 推理规则相当复杂,可以发明一些用例,但编译器需要花费一些时间才能弄清楚。然而,现实世界中的大多数代码并不复杂,编译器通常可以很快地推断出来。
Java 8 推理要复杂得多,我预计编译器会明显变慢。慢多少?- 我们将不得不拭目以待。