Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Java没有';你没有“内联”方法吗?_Java - Fatal编程技术网

为什么Java没有';你没有“内联”方法吗?

为什么Java没有';你没有“内联”方法吗?,java,Java,内联方法(如C++中的内联方法)似乎是一个非常简单的想法,有助于优化代码。 例如(超过1'000'000次循环的平均值): 比调用具有相同内容的方法快4倍 float distance = getDistance(a,b,c,d); 所以Java不支持内联方法肯定是有原因的

内联方法(如C++中的内联方法)似乎是一个非常简单的想法,有助于优化代码。
例如(超过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);