估计有很多同学都对C++/JAVA/C#这三大热门语言的运行机制和执行效率有或多或少的困惑,自己也有,但是经过前期的学习,了解了三者在这两方面的区别,就废话不说了,进入主题吧。

        一、运行机制
       1、JAVA-编译和解释型语言   
       一个JAVA文件,首先会由JAVA编译器(JAVAC)编译成class(字节码文件)文件,然后由Java虚拟机(JVM)去解释。不同的操作系统只要装有适合不同平台的JDK,JAVA文件都可以被解释运行。JAVA是一种编译和解释型语言。
       字节码文件(class)之所以能够被JAVA虚拟机(JVM)所解释,最主要的原因就是字节码文件(class)里面所包含的内容是可以被JAVA虚拟机(JVM)所解释的一种高度优化指令。
       而JAVA文件只需要编译一次就可以在不同的操作系统上解释运行,也就是说一次编译处处运行,这就是JAVA可以跨平台的原因。
 
       2、C++-编译型语言
       C++没有虚拟机这种概念,也就是说C++一旦编译就可以运行,是一种编译型语言,速度上比JAVA快得多,C++编译完成后是机器码(二进制文件)可以直接在操作系统上运行。
 
       3、C#-编译再编译型语言
       C#与一样,同样有虚拟机,但是他的虚拟机是CLR(公共语言运行时)。一个C#文件,首先会由C#编译器编译成低级别的中间语言IL,然后由C#虚拟机也就是公共语言运行时(CLR)即时编译(JIT)编译成机器代码,再由CUP去执行它。所以说C#的执行必须通过二次编译。
 
      二、执行效率
      1、运行速度方面
      从这个方面来说的话,C++是最快的。因为C++编译后成为机器码可以直接运行,但是JAVA编译完后需要JVM解释,C#编译后需要由CLR进行二次编译。
     2、编译效率方面
     从这个方面来说的话,C++编译后的机器码并不是每个操作系统通用的,如果换到其他操作系统上就需要再次编译。同样,C#通过二次编译后的机器代码也是如此。所以这个时候JAVA JVM的优势就体现出来了,JAVA的字节码文件一次编译处处运行,换个操作系统仍然无需再次编译。所以,从编译效率来说,JAVA是最高的。
    3、安全角度考虑
     从安全角度考虑,C#是这几中语言中最为安全的,它其中定义的相关安全机制很好的确保了系统的安全。
 
个人总结:小弟总结如下:
     c++并不保证一定效率高于java和c#,就像汇编语言也不保证效率高过c一样。 但他们都提供了一种效率更高的机会,首先要你水平够高,才能写出效率更高的程序,否则,即使你用了c++/c甚至汇编,也可能生成的是低效率程序。 其次,对于c++还要看你用的编译器写的水平高低,看你编译时用了什么样优化。 再说,开发时用什么语言,考虑得远不是执行效率高一个因素,大多数情况下,执行效率是排在很后面的一个不重要因素。

浅谈C++/JAVA/C#运行机制和执行效率的更多相关文章

  1. 浅谈SQL Server内部运行机制

    对于已经很熟悉T-SQL的读者,或者对于较专业的DBA来说,逻辑的增删改查,或者较复杂的SQL语句,都是非常简单的,不存在任何挑战,不值得一提,那么,SQL的哪些方面是他们的挑战 或者软肋呢? 那就是 ...

  2. 浅谈Linux中的信号处理机制(二)

    首先谢谢 @小尧弟 这位朋友对我昨天夜里写的一篇<浅谈Linux中的信号处理机制(一)>的指正,之前的题目我用的“浅析”一词,给人一种要剖析内核的感觉.本人自知功力不够,尚且不能对着Lin ...

  3. Java学习系列(一)Java的运行机制、JDK的安装配置及常用命令详解

    俗话说:“十五的月亮十六圆”.那学习是不是也是如此呢?如果把月亮看成是我们的愿望,那十五便是我们所处的“高原期”,坚持迈过这个坎,我相信你的愿望终究会现实的.记得马云曾说:今天很残酷,明天更残酷,后天 ...

  4. 【ASP.NET MVC系列】浅谈ASP.NET MVC运行过程

    ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...

  5. Java的运行机制概括

    这次随笔主要记录一下我对Java的平台无关性一些新的理解,以前只知道是Java是一门很容易跨平台的语言,正如 "Compile once, run anywhere" 这句话,也知 ...

  6. 20190608_浅谈go&java差异(三)

    20190608_浅谈go&java差异(三) 转载请注明出处https://www.cnblogs.com/funnyzpc/p/10990703.html 第三节内容概览 多线程通讯(线程 ...

  7. java虚拟机运行机制

    转自java虚拟机运行机制 首先简单阐述下解释型语言和编译型语言的联系与区别. 编译型语言是通过编译器将程序编译成目标机器所能识别的机器码,而解释型语言不需要编译过程.由该语言的解释器读取脚本,按照语 ...

  8. java的运行机制(基础)

    1:高级语言的运行机制: 我们编程都是用的高级语言(写汇编和机器语言的大牛们除外),计算机不能直接理解高级语言,只能理解和运行机器语言,所以必须要把高级语言翻译成机器语言,计算机才能运行高级语言所编写 ...

  9. 第一个java程序以及java的运行机制

    课堂要点: 编写第一个java程序以及理解java的运行机制. 1.基本命令介绍: javac命令: 编译java文件得到.class字节码文件 -encoding 参数:指定编译的编码 java命令 ...

随机推荐

  1. SSIS 数据流优化

    一,数据流设计优化 数据流有两个特性:流和在内存缓冲区中处理数据,根据数据流的这两个特性,对数据流进行优化. 1,流,同时对数据进行提取,转换和加载操作 流,就是在source提取数据时,转换组件处理 ...

  2. Zabbix实战-简易教程--WEB类--Nginx

    一.开启Nginx status状态 1.在默认主机里面加上location添加ngx_status 如下操作: server { listen 127.0.0.1:8080; server_name ...

  3. 我的Cocos Creator成长之路1环境搭建以及基本的文档阅读

    本人原来一直是做cocos-js和cocos-lua的,应公司发展需要,现转型为creator.会在自己的博客上记录自己的成长之路. 1.文档阅读:(cocos的官方文档) http://docs.c ...

  4. Git知识点整合

    Git安装 Windows上安装Git 64 位安装包下载地址 : https://github.com/git-for-windows/git/releases/download/v2.16.2.w ...

  5. java IO流 对文件操作的代码集合

    Io流 按照分类 有两种分类 流向方向: 有输入流和输出流 按照操作类型有:字节流和字符流 按照流向方向 字节流的一些操作 //读文件 FileInputStream fis = new FileIn ...

  6. 为 GlusterFS 设计新的xlator (编译及调用过程分析)

    GlusterFS 是一个开源的网络分布式文件系统,前一阵子看了一点GlusterFS(Gluster)的代码,修改了部分代码,具体是增加了一个定制的xlator,简单记录一下. Gluster与xl ...

  7. python-五行红旗实现

    import turtle """ 绘制五星红旗 作者:zxj 版本:1.0 """ # 绘制矩形函数 def giant(leg,hig) ...

  8. 机器学习之k-最近邻(kNN)算法

    一.kNN(k-nearest neighbor)算法原理 事物都遵循物以类聚的思想,即有相同特性的事物在特征空间分布上会靠得更近,所以kNN的思路是:一个样本在特征空间中k个靠的最近的样本中,大多数 ...

  9. 精通Python爬虫-03-狩猎大师

    声明: 本系列文章原创于慕课网,作者秋名山车神,任何人不得以任何形式在不经作者允许的情况下,进行任何形式的印刷以及销售,转载需注明出处及此声明. 本系列文章更新至少每周一更,将涉及Python爬虫基础 ...

  10. MathExam6317

    自己取一个大气又可爱的标题 小学二年级的还没来得及写,大部分时间还是花在巩固和查阅新旧知识上了,通过看学习视频,查资料,看博客园的博客...下次完善好了交上. 一.预估与实际 PSP2.1 Perso ...