zoukankan      html  css  js  c++  java
  • 相同代码为什么java运行时间比c++要长?

    本博文的大体的框架是引用了原博文
    其中有自己的一些资料的整理,然后还有自己的一些搜索。解答这篇博文中的比较难懂的知识点。
    1)java是解释性语言,java程序在运行时类加载器从类路经中加载相关的类,然后jvm读取该类文件的字节,执行相应操作.而C++编译的时候将程序编译成本地机器码.一般来说java程序执行速度要比C++慢10-30倍.即使采用just-in-time compiling (读取类文件字节后,编译成本地机器码)技术,速度也要比C++慢好多. 
    1中的讲解的补充:
    因为JVM本身就是用C/C++写的,这就意味着想要运行Java,就必须先跑起C/C++。换言之,Java通过JVM编译成C/C++,哪比得上直接写C/C++。这不是贬低Java,有时C/C++开发难度就是很大,很多情况不得已而为之。比如0与1可以实现任何操作系统,但是在开发者的角度上是不可为的。

    2)java程序有要从网络上加载类字节,然后执行,这也是导致java运行速度慢的原因.

    3)在程序运行过程中,java虚拟机要检测数组是否越界,在C++中则不检测.

    在这提供一片博文链接:https://blog.csdn.net/ive_lanco/article/details/81094484

    4)java中所有的对象都创建在堆中,没有对象被创建在stack中,而C++有的对象和变量是创建在stack中的

    在这提供一篇博文链接:https://blog.csdn.net/rickiyeat/article/details/76802085

    这篇博文,我们可以鉴赏性的观看,但是如果我们的资历足够的深厚,那么我们可以进行一些讲解

    欢迎在我的博文的下方进行留言。

    5) java在运行过程中检测对象的引用是否为空,如果引用指向都空指针,且执行某个方法时会抛出空指针异常

    6)java运行时对类型检测,如果类型不正确会抛出ClassCastException异常.

    7)java的垃圾回收机制较C++由程序员管理内存效率更低.

    8) java中的原始数据类型在每个操作系统平台长度都是相同,而C++这些数据类型长度是随操作系统的不同而不同,所以java在不同操作系统上执行时有个转化过程.

    9)在java中String 是UNICODE.当java要操作一个 ASCII string 时,比C++效率上相对要低一些. 

    10)java中采用的是动态链接

    11)jvm本身的一些机制如垃圾回收,类的查找与加载等也是有时间消耗。

    不过任何事情都是有两面性,java可能比c、c++慢,但是这个平台为我们屏蔽了很多机器和操作系统的差异性,我们编写java代码基本不用太多考虑机器和操作系统本身的东西。并且有很好的可移植性。比如你在Windows下写的java代码,基本上只需要做很少的修改就可以在Linux下运行了。

  • 相关阅读:
    Windows自动更新所需要连接的网站列表
    DFX 9.303 for QQMusic 2010
    在VPC 2007 SP1中安装Ubuntu 10.04 desktop (完成)
    穷人把钱存入银行,实际上是补贴富人。
    清理Windows右下角图标
    阿里镜像pull 加速器
    k8s 安装flannel网络插件
    k8s pull.sh
    kubeadm1.10.00 安装k8s集群
    虚拟机vmware centos7 扩展磁盘空间
  • 原文地址:https://www.cnblogs.com/littleswan/p/11374290.html
Copyright © 2011-2022 走看看