Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.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_C_Compiler Construction_Compilation_Programming Languages - Fatal编程技术网

Java 动态编译语言与静态编译语言

Java 动态编译语言与静态编译语言,java,c,compiler-construction,compilation,programming-languages,Java,C,Compiler Construction,Compilation,Programming Languages,这篇文章的第一行让我把这个问题贴在SO上。这又是一句话: 编写和解释动态测试的性能基准 编译语言(如Java)比编译语言困难得多 静态编译的语言,如C或C++。 我知道答案。但动态编译语言与静态编译语言的区别是什么?< P> C和C++源代码通常由编译器编译为本机代码。 Java由Java编译器编译成字节码。当您运行Java程序时,a可能会将Java字节码编译为运行该程序的CPU的本机代码 当程序运行时,将程序编译为本机代码也被称为。动态编译和动态键入之间没有太多关系。键入是语言语法的一部分,而

这篇文章的第一行让我把这个问题贴在SO上。这又是一句话:

编写和解释动态测试的性能基准 编译语言(如Java)比编译语言困难得多 静态编译的语言,如C或C++。
我知道答案。但动态编译语言与静态编译语言的区别是什么?

< P> C和C++源代码通常由编译器编译为本机代码。 Java由Java编译器编译成字节码。当您运行Java程序时,a可能会将Java字节码编译为运行该程序的CPU的本机代码

当程序运行时,将程序编译为本机代码也被称为。动态编译和动态键入之间没有太多关系。键入是语言语法的一部分,而编译策略是语言实现的一部分

动态类型意味着您在声明变量时不必声明类型,并且在大多数情况下类型之间的转换会自动进行

动态编译是指在程序执行时,而不是之前,将语言编译成机器代码。例如,这允许即时优化—在应用程序运行时对代码进行优化。JIT优化器的优点是,它拥有关于哪些代码分支最常使用以及它们通常如何使用的更可靠的信息,因为它可以在应用优化之前观察应用程序的运行情况


动态编译是自动基准测试的一个问题,因为同一程序代码段的多个度量值可以比较完全不同的机器代码解释,因为优化器已决定在两次运行之间更改实现。

动态编译与静态编译指的是如何以及如果,编译器生成的代码可以在执行过程中更改,以更改性能或程序

静态编译不允许这样的操作,因为所有地址和跳转都是固定的(除非您自己编写代码在执行过程中更改指令顺序)


动态编译允许在程序执行期间进行检查,收集的信息可用于加快运行速度。从基准测试的角度来看,不同之处在于动态编译程序的执行时间在执行过程中会发生显著变化。通常先解释java代码,然后,当解释器发现某个方法被多次调用时,它调用JIT编译器将其转换为本机代码。编译后的代码仍然受到监控,当确定代码的频繁执行部分(“热点”)时,它们会得到进一步优化

作为最低要求,动态编译语言的基准必须将“预热阶段”(代码优化时)与执行的其余部分分开处理