Gee*_*eek 15 c java compiler-construction programming-languages compilation
Brian Goetz撰写本文的第一行让我在SO中发布这个问题.这又是一行:
为动态编译语言(如Java)编写和解释性能基准要比使用C或C++这样的静态编译语言困难得多.
我知道静态类型与动态类型语言的答案.但动态编译语言与静态编译语言之间有什么区别?
Phi*_*ipp 26
动态编译和动态类型彼此没有多大关系.键入是语言语法的一部分,而编译策略是语言实现的一部分.
动态类型意味着您在声明变量时不必声明类型,并且在大多数情况下类型之间的转换会自动发生.
动态编译意味着在执行程序时将语言编译为机器代码,而不是之前.这允许,例如,即时优化 - 在应用程序运行时优化代码.JIT优化器的优势在于它具有更可靠的信息,这些信息关于代码的哪些分支最常使用以及它们通常如何使用,因为它可以在应用优化之前观察应用程序的运行情况.
动态编译是自动基准测试的一个问题,因为同一程序代码部分的多次测量可以比较完全不同的机器代码解释,因为优化器已决定在两次运行之间更改实现.
C和C++源代码通常由编译器编译为本机机器代码.
Java编译器将Java编译为字节码.当您运行Java程序时,实时(JIT)编译器可能会将Java字节码编译为运行该程序的CPU的本机代码.
程序运行时将程序编译为本机机器代码也称为动态编译.