3

我想知道 Java 7 中泛型类型推断的性能损失是什么。“泛型方法类型推断”成本(即this)与“泛型分配类型推断”成本(即this)是否不同?我想成本可以忽略不计,因为泛型的类型推断是在编译时完成的?

此外,就 Java 8 中的“改进的类型推断”(即this)而言(由于 lambda),这是否也会对性能造成影响?Java 8 中类型推断的性能成本与 Java 7 中的性能成本有何不同?

我意识到这些都是困难的(并且可能是信息不灵通的)问题,因此,欢迎任何意见。

4

3 回答 3

5

“泛型方法类型推断”成本(即this)与“泛型分配类型推断”成本(即this)是否不同?

不。

我想成本可以忽略不计,因为泛型的类型推断是在编译时完成的?

由于这个原因,成本为零,除非您计算编译时间。

此外,就 Java 8 中的“改进的类型推断”(即 this)而言(由于 lambda),这是否也会对性能造成影响?

这也是零。没有关于它的“也征收性能损失”。

于 2013-05-22T06:03:44.397 回答
4

如您所想,泛型在编译期间被删除,之后只有纯(非泛型)类。

Java 7 中的类型推断执行起来非常简单(当然仍在编译期间),因此它根本不会影响性能。

于 2013-05-22T05:58:02.633 回答
2

普通方法类型推断和构造函数类型推断(所谓的“钻石”)几乎相同,成本也应该相同。

类型推断仅在编译时完成。

Java 7 推理规则相当复杂,可以发明一些用例,但编译器需要花费一些时间才能弄清楚。然而,现实世界中的大多数代码并不复杂,编译器通常可以很快地推断出来。

Java 8 推理要复杂得多,我预计编译器会明显变慢。慢多少?- 我们将不得不拭目以待。

于 2013-05-22T06:05:50.640 回答