展开菜单
首页 精品内容 本月促销 装机必备 Windows PDF教程 macOS软件 IOS软件 Android AI 专题
全部分类

当前位置:

首页 > 编程开发 > Java和C++性能比较分析

Java和C++性能比较分析

1.概述编程语言根据其抽象级别进行分类。我们区分高级语言(Java,Python,JavaScript,C++,Go),低级语言(汇编程序),最后是机器代码。每个高级语言代码(例如Java)都需要转换为机器本地代码才能执行。该翻译过程可以是编译或解释。但是,还有第三种选择。试图利用两种方法的组合。2.编译与解释让我们开始研究编译和解释语言之间的一些差异。2.1编译语言编译器将编译语言(C++,Go)直接转换为机器码。在执行之前,它们需要明确的构建步骤。这就是为什么每次更改代码时都需要重新编译程序。编译语言

本文目录

    1. 概述

    编程语言根据其抽象级别进行分类。我们区分高级语言(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在运行时优化我们的代码,以获得与编译语言相似的性能优势。

    4. Java编译器

    javac的命令行工具把Java源代码编译转换成Java类文件(xxx.class)与平台无关的字节码:

    $ javac HelloWorld.java

    源代码文件带有.java后缀,而包含字节码的类文件则带有.class后缀。

    Java和C++性能比较分析

    5. Java虚拟机

    编译的类文件(字节码),可以由JVM执行:

    $ java HelloWorld Hello Java!

    在运行时如何将字节码转换为机器本机代码。

    5.1 架构概述

    JVM由五部分组成:

    • 类加载器

    • JVM内存结构

    • 执行引擎

    • 本地方法接口

    • 本地方法库

    Java和C++性能比较分析

    5.2 类加载器

    JVM利用ClassLoader将已编译的类文件加载到JVM内存

    除加载外,ClassLoader还执行链接和初始化。

    • 验证字节码是否存在安全漏洞

    • 为静态变量分配内存

    • 用原始引用替换符号内存引用

    • 将原始值分配给静态变量

    • 执行所有静态代码块

    5.3 执行引擎

    执行引擎负责读取字节码,将其转换为机器本机代码并执行。

    三个主要组件负责执行,包括解释器和编译器:

    • 由于JVM与平台无关,因此它使用解释器执行字节码

    • JIT编译器在重复的方法调用处,把字节码编译为本地代码以提高性能。

    • 垃圾收集器收集并删除所有未引用的对象。

    执行引擎利用本机方法接口(JNI)来调用本地库和应用程序。

    5.4 即时编译器(JIT)

    解释器的主要缺点是:每次调用方法时,都需要解释执行,这比编译的本机代码要慢。Java使用JIT编译器来克服此问题。

    JIT编译器不能完全替代解释器。执行引擎仍在使用它。但是,JVM根据调用方法的频率使用JIT编译器。

    JIT编译器将整个方法的字节码编译为机器本机代码,因此可以直接重用。与标准编译器一样,生成中间代码,进行优化,然后生成机器本机代码。

    探查器是JIT编译器的特殊组件,负责查找热点。JVM根据运行时收集的性能分析信息来决定要编译的代码。

    Java和C++性能比较分析

    这样的效果是,经过几个执行周期,Java程序可以更快地执行其工作。JVM了解到热点后,便可以创建本机代码,从而使运行速度更快。

    6. 性能比较

    让我们看一下JIT编译如何提高Java的运行时性能。

    6.1 斐波那契数列性能测试

    我们将使用一种简单的递归方法来计算第n个斐波那契数:

    private static int fibonacci(int index) {     if (index <= 1) {         return index;     }     return fibonacci(index-1) + fibonacci(index-2); }

    为了衡量重复方法调用的性能收益,我们将运行Fibonacci方法100次:

    for (int i = 0; i < 100; i++) {     long startTime = System.nanoTime();     int result = fibonacci(12);     long totalTime = System.nanoTime() - startTime;     System.out.println(totalTime); }

    首先,我们将正常编译并执行Java代码:

    $ java Fibonacci.java

    然后,我们将在禁用JIT编译器的情况下执行相同的代码:

    $ java -Djava.compiler=NONE Fibonacci.java

    最后,我们将在C ++和JavaScript中实现并运行相同的算法进行比较。

    6.2 性能测试结果

    让我们看一下运行斐波那契数列测试后以纳秒为单位测量的平均性能:

    • 使用JIT编译器的Java – 2726 ns –最快

    • 没有JIT编译器的Java – 17965 ns –慢559%

    • 没有O2优化的C ++ – 9435 ns –降低246%

    • 具有O2优化的C ++ – 3639 ns –慢33%

    • JavaScript – 22998 ns –慢743%

    在此示例中,使用JIT编译器,Java的性能提高了500%以上。但是,JIT编译器确实需要运行一些才能运行。

    有趣的是,即使在启用O2优化标志的情况下编译C ++,Java的性能也比C ++代码好33%。当仍在解释Java时,C  ++在前几次运行中的性能要好得多。

    Java还胜过与Node一起运行的等效JavaScript代码,后者也使用JIT编译器。结果显示性能提高了700%以上。主要原因是Java的JIT编译器启动速度更快。

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发 Java C++
    相关文章 更多
    精品专题 更多
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    macOS软件

    正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

    IOS软件

    正软商城iOS软件专区,精选适用于iPhone和iPad的办公、学习、影音、设计、效率及AI应用,提供功能介绍、适用设备、系统要求和正版获取方式等信息。

    AI

    正软商城AI软件专区,汇集AI写作、AI绘画、AI视频、AI办公、AI编程、AI翻译、智能客服和数据分析等人工智能工具,提供功能介绍、适用平台、收费方式及正版购买信息。

    Mac软件 更多
    Aperty macOS版
    Aperty macOS版

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    火山引擎 网页版
    火山引擎 网页版

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    立刻MV 网页版
    立刻MV 网页版

    立刻MV 面向音乐人、内容创作者和品牌团队,帮助用户低成本完成歌曲 MV、歌词视频、AI 分镜、图生视频与最终合成。

    蛙蛙写作 网页版
    蛙蛙写作 网页版

    蛙蛙写作 AI 创作工具,覆盖小说、剧本、文案,一键生成文稿,打通文字转视频全流程,高效解决创作难题。

    讯飞智作 网页版
    讯飞智作 网页版

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    超级简历WonderCV 网页版
    超级简历WonderCV 网页版

    超级简历WonderCV是面向应届生和AI小白的智能求职平台,覆盖简历、面试与职业规划。

    音述AI 网页版
    音述AI 网页版

    音述AI,是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区。

    AionClaw macOS版
    AionClaw macOS版

    AionClaw 是可在桌面端运行的任务型 AI 助手,通过数字专家与技能市场组合办公、创作、数据和开发能力。

    Loomy macOS版
    Loomy macOS版

    Loomy 是科大讯飞推出的桌面 AI 助手,可通过对话、任务与工作目录协助处理办公、内容创作和资料整理。

    AirBuddy 3 macOS版
    AirBuddy 3 macOS版

    AirBuddy 3 是面向 macOS 的蓝牙外设增强工具,可集中查看 AirPods、Beats 与苹果设备电量,提供快速连接、播放控制、电量提醒、桌面小组件和多台 Mac 外设接力等功能。

    AirServer macOS版
    AirServer macOS版

    AirServer macOS版可把 Mac 转换为无线投屏接收端,通过 AirPlay 或 Google Cast 接收手机、平板和电脑画面,并支持多设备同时连接、高清镜像及会话录制,适合家庭娱乐、课堂教学、会议演示和应用展示。

    AnyDesk macOS版
    AnyDesk macOS版

    AnyDesk macOS版是一款适用于远程办公、设备维护和客户支持的远程桌面工具,可连接并操作异地计算机,支持文件传输、无人值守访问、会话权限控制及跨平台协作。

    WINDOWS 更多
    讯飞绘文 网页版
    讯飞绘文 网页版

    讯飞绘文网页版是科大讯飞推出的AI图文创作与内容运营工具,覆盖热点选题、文章生成、稿件校对、智能配图、排版发布和数据复盘等环节,适合自媒体创作者及内容团队在线使用。

    Maya(Autodesk Maya) Windows版
    Maya(Autodesk Maya) Windows版

    Autodesk Maya 是面向影视、电视、动画和游戏行业的专业三维制作软件,集多边形与 NURBS 建模、角色绑定、关键帧和动作捕捉动画、Bifrost 特效模拟、材质开发及 Arnold 渲染于一体,

    Aperty Windows版
    Aperty Windows版

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    火山引擎 网页版
    火山引擎 网页版

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    立刻MV 网页版
    立刻MV 网页版

    立刻MV 面向音乐人、内容创作者和品牌团队,帮助用户低成本完成歌曲 MV、歌词视频、AI 分镜、图生视频与最终合成。

    蛙蛙写作 网页版
    蛙蛙写作 网页版

    蛙蛙写作 AI 创作工具,覆盖小说、剧本、文案,一键生成文稿,打通文字转视频全流程,高效解决创作难题。

    讯飞智作 网页版
    讯飞智作 网页版

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    超级简历WonderCV 网页版
    超级简历WonderCV 网页版

    超级简历WonderCV是面向应届生和AI小白的智能求职平台,覆盖简历、面试与职业规划。

    音述AI 网页版
    音述AI 网页版

    音述AI,是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区。

    AionClaw Windows版
    AionClaw Windows版

    AionClaw 是可在桌面端运行的任务型 AI 助手,通过数字专家与技能市场组合办公、创作、数据和开发能力。

    Loomy Windows版
    Loomy Windows版

    Loomy 是科大讯飞推出的桌面 AI 助手,可通过对话、任务与工作目录协助处理办公、内容创作和资料整理。

    AirServer Windows版
    AirServer Windows版

    AirServer Windows版可把电脑变成AirPlay、Google Cast和Miracast无线投屏接收端,适合会议演示、课堂教学及家庭大屏分享。发送设备通常无需另装客户端,并可同时接收和智能排列多个镜像会话。