从安全角度考虑,C#是这几中语言中最为安全的,它其中定义的相关安全机制很好的确保了系统的安全...

今天和同学们一起探讨下c++/java/c# 三大热门语言的运行效率情况,以及各自的用途。

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

 一、运行机制

1、JAVA-编译和解释型语言

一个JAVA文件,首先会由JAVA编译器(JAVAC)编译成class(字节码文件)文件,然后由Java虚拟机(JVM)去解释。不同的操作系统只要装有适合不同平台的JDK,JAVA文件都可以被解释运行。JAVA是一种编译和解释型语言。
       字节码文件(class)之所以能够被JAVA虚拟机(JVM)所解释,最主要的原因就是字节码文件(class)里面所包含的内容是可以被JAVA虚拟机(JVM)所解释的一种高度优化指令。
       而JAVA文件只需要编译一次就可以在不同的操作系统上解释运行,也就是说一次编译处处运行,这就是JAVA可以跨平台的原因。如果你想学习Java可以来这个群,首先是二二零,中间是一四二,最后是九零六,里面有大量的学习资料可以下载。

2、C++-编译型语言

C++没有虚拟机这种概念,也就是说C++一旦编译就可以运行,是一种编译型语言,速度上比JAVA快得多,C++编译完成后是机器码(二进制文件)可以直接在操作系统上运行。如果你想学习C/C++/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. 机器人研发十大热门编程语言:不死 Java、不朽 C/C ++、新贵 Python

    流水的编程语言,铁打的 Java.C/C++. 进行人工智能机器人研发,应该选择哪种编程语言? 这是很多机器人专家在自身的职业生涯中都会存在的一个入门级思考.毕竟,在学习一门编程语言时,需要花费大量的 ...

  2. 夯实Java基础系列1:Java面向对象三大特性(基础篇)

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 [https://github.com/h2pl/Java-Tutorial](https: ...

  3. java提高篇(四)-----理解java的三大特性之多态

    面向对象编程有三大特性:封装.继承.多态. 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法. 继承 ...

  4. java提高篇(二)-----理解java的三大特性之继承

    在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ...

  5. Atitit.java c#这类编程语言的设计失败点attilax总结

    Atitit.java c#这类编程语言的设计失败点attilax总结 1. Npe1 2. Api粒度过小而又没有提供最常用模式1 3. checked exception(jeig n jyejy ...

  6. c++/java/c# 几种编程语言的指针、引用比较

    前一段时间,我在 cnblogs 别人的博客中,谈到: java 中的引用/指针,与 c++/C# 中的引用/指针不是一个概念. Java 引用,相当于 c++ 指针(fun3).Java 引用可以赋 ...

  7. java提高篇(三)-----理解java的三大特性之多态

    面向对象编程有三大特性:封装.继承.多态. 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法. 继承 ...

  8. java提高篇(二)-----理解java的三大特性之继承

    在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ...

  9. JAVA的三大特征 封装继承多态- 简单总结

    简单总结一下 封装-即从很多类的抽取相同的代码 写在一个类里. 好处是 代码的重用,安全. 继承-减少代码的书写. 其好处也是 代码的重用. 多态- 把不同的子类对象都当作父类来看,可以屏蔽不同子类对 ...

随机推荐

  1. java装箱跟拆箱解析

    /** * 在jdk1.5之后,java为基本数据类型到对应的应用数据类型提供了自动拆箱装箱操作 * 不管是自动拆箱还是自动装箱都是应用数据类型有的方法,基本数据类型是没有任何方法可调用的 *从概念上 ...

  2. swift -- 代理delegate

    1.声明协议 protocol SecondDelagate { func sendValue(text : String!) -> Void } 2.声明代理属性 var delegate : ...

  3. fprintf&prinft&sprintf

    1: fprintf()#include <stdio.h> int fprintf( FILE *stream, const char *format, ... );fprintf()函 ...

  4. TIME_WAIT问题总结

         最近用http_load做压测,跑出来一大串"Cannot assign requested address "的错误,查了一下,是TIME_WAIT过多导致的.因为短时 ...

  5. ZooKeeper的简单理解

    1 ZooKeeper的一致性特点 概念 描述 备注 顺序一致性 以ZXID来保证事务的顺序性 原子性 以ZAB保证原子操作,要么成功,要么失败 单一视图 无论客户端从哪个服务器获取到关于应用的数据都 ...

  6. Python中三种基本结构的语句

    选择语句 if 条件判断 : # 条件可以加括号也可以不加括号 -- else: -- Python中没有switch语句这是可以使用if exp:.... elif exp:来代替 if 判断条件1 ...

  7. 去除IOS浏览器下面的工具栏

    在head标签里添加下面的元素 即可 <meta id="viewport" name="viewport" content="width=de ...

  8. css的存在方式和选择器

    css的存在方式 元素内联 页面嵌入 外部引入 元素内联 直接在html的标签中定义样式,类似于: <div style="属性1;属性2;属性3"><div&g ...

  9. CodeBlocks常用重要快捷键大全!!

    CodeBlocks常用操作快捷键 编辑部分: Ctrl + A:全选 Ctrl + C:复制 Ctrl + X: 剪切 Ctrl + V:粘贴 Ctrl + Z:撤销(后退一步) Ctrl + S: ...

  10. centos下美团sql优化工具SQLAdvisor的安装

    1.克隆代码 cd /usr/local/src/git clone https://github.com/Meituan-Dianping/SQLAdvisor.git 2.安装依赖(ubuntu下 ...