为什么Java没有';你没有“内联”方法吗?
内联方法(如C++中的内联方法)似乎是一个非常简单的想法,有助于优化代码。为什么Java没有';你没有“内联”方法吗?,java,Java,内联方法(如C++中的内联方法)似乎是一个非常简单的想法,有助于优化代码。 例如(超过1'000'000次循环的平均值): 比调用具有相同内容的方法快4倍 float distance = getDistance(a,b,c,d); 所以Java不支持内联方法肯定是有原因的
例如(超过1'000'000次循环的平均值): 比调用具有相同内容的方法快4倍
float distance = getDistance(a,b,c,d);
所以Java不支持内联方法肯定是有原因的<什么事?我看不出发生这种情况的原因。尝试使用方法
final
,差异就会消失。并使用Oracle或IBM提供的最新版本的Java
现在,Java没有很多优化关键字的原因很简单:发明Java的人不喜欢C开发人员花多少时间从编译器中挤出最后一滴汁。这感觉像是对生产时间的巨大浪费
因此,Java的思想是编写代码。你只专注于编写好的代码。然后,Java编译器和运行时使其快速运行。这意味着运行时会分析CPU,并根据CPU的功能对代码进行不同的优化。这就是java代码比C++更快的原因。
当然,坏代码就是坏代码,不管优化器多么聪明。因此,您可以编写速度非常慢但不依赖于语言的代码。据我所知,内联通常由JVM在执行时完成Java在JVM上工作,您必须询问语言的设计人员。它在运行时支持许多优化技术,包括方法内联:。如果我遗漏了什么,请纠正我,但JVM专家Brian Goetz说final对内联的方法没有影响。Reference:@rahultripati:我看不出内联代码应该更慢的另一个原因。是吗?我也不知道,但我经历了这件事后感到困惑,这就是我为什么问的原因<代码>当然,坏代码就是坏代码,不管优化器多么聪明。。我喜欢这样+1@RahulTripathi例如我试图改进措辞。
float distance = getDistance(a,b,c,d);