Java比C++慢?看了测试结果,推翻了我的认知,不得不说JIT真的强
编程语言根据其抽象级别进行分类。我们区分高级语言(Java,Python,JavaScript,C ++,Go),低级语言(汇编程序),最后是机器代码。 每个高级语言代码(例如Java)都需要转换为机器本地代码才能执行。该翻译过程可以是编译或解释。但是,还有第三种选择。试图利用两种方法的组合。 2. 编译与解释 让我们开始研究编译和解释语言之间的一些差异。 2.1 编译语言 编译器将编译语言(C ++,Go)直接转换为机器码。 在执行之前,它们需要明确的构建步骤。这就是为什么每次更改代码时都需要重新编译程序。 编译语言往往比解释语言更快,更有效。但是,它们生成的机器码是特定于平台的。 2.2 解释语言 在解释语言(Python,JavaScript)中,没有构建步骤。相反,解释器在执行程序时对程序的源代码进行操作。 曾经认为解释语言比编译语言要慢得多。但是,随着即时编译(JIT)的发展,性能差距正在缩小。JIT编译器在程序运行时将代码从解释语言转换为机器码。 此外,我们可以在Windows,Linux或Mac等多个平台上执行解释后的语言代码。解释代码与特定类型的CPU体系结构没有关联。 3. Write Once Run Anywhere Java和JVM在设计时考虑了可移植性。因此,当今大多数流行的平台都可以运行Java代码。 这听起来似乎暗示着Java是一种纯解释性语言。但是,在执行之前,需要将Java源代码编译为字节码。字节码是JVM固有的一种特殊机器语言。JVM在运行时解释并执行此代码。 它是JVM为支持Java的每个平台构建和定制的,并不是我们的程序或库。 JVM也具有JIT编译器。这意味着JVM在运行时优化我们的代码,以获得与编译语言相似的性能优势。 (编辑:湘西站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |