zoukankan      html  css  js  c++  java
  • java和c++比较,哪个更高效?

     最近在刷牛客网,发现了一个问题就是。做一道题,如果要是用c++写出来的语言,无论是在时间还是空间方面,都比java的效果要好。

    用我自己的知识,我也能想到一点,那就是一点皮毛,因为c++是编译型的语言,而java是解释型的语言。而什么是编译型的语言,什么是解释型的语言呢

    编译型语言:程序在执行之前需要一个专门的编译过程,把程序编译成为机器语言的文件,运行时不需要重新翻译,直接使用编译的结果就行了。程序执行效率高,依赖编译器,跨平台性差。c,c++,Delphi等。

    解释型语言:程序不需要编译,程序运行时才翻译成机器语言,每执行一次都要翻译一次。因此效率比较低。比如Basic语言,专门有一个解释器能够直接执行Basic程序,每个语句都是执行的时候才翻译。效率比较低,依赖解释器,跨平台性好。运行:先翻译成中间代码,然后由解释器执行。

    解释型和编译型的解释与介绍:

    1.编译型语言

      编译型语言指的是将所有代码一次性编译,然后再执行。

      优点:执行速度快;缺点:开发效率低。

    2.解释型语言:

      解释型语言指的是每编译一句,执行一句。

      优点:开发效率高;缺点:执行速度慢。

    注:当代码量非常多,有几万行甚至更多的时候,仅仅只是把这些代码全部编译,可能就需要耗费数几个小时的时间。因此,一旦代码出错,对于编译型语言而言,就需要重新开始重头编译,极度耗费时间。

      开发效率低,但他的执行速度很快。相反解释型语言,每解释一句,就执行一句,一旦出错,可以及时修正,继续编译,因此,开发效率高,但速度慢。

    编译型语言和解释型语言的区别

    解释性语言在运行程序的时候才翻译,比如解释性basic语言,专门有一个解释器能够直接执行basic程序,每个语句都是执行的时候才翻译。这样解释性语言每执行一次就要翻译一次,效率比较低。

    编译型与解释型,两者各有利弊

    前者由于程序执行速度快,同等条件下对系统要求较低,因此像开发操作系统、大型应用程序、数据库系统等时都采用它,像C/C++、Pascal/Object Pascal(Delphi)等都是编译语言,而一些网页脚本、服务器脚本及辅助开发接口这样的对速度要求不高、对不同系统平台间的兼容性有一定要求的程序则通常使用解释性语言,如Java、JavaScript、VBScript、Perl、Python、Ruby、MATLAB 等等。 

    编译性语言不如解释性语言跨平台性好

    编译性语言例如c语言:用c语言开发了程序后,需要通过编译器把程序编译成机器语言(即计算机识别的二进制文件,因为不同的操作系统计算机识别的二进制文件是不同的),所以c语言程序进行移植后,要重新编译。(如windows编译成ext文件,linux编译成erp文件)。 [2] 
    解释性语言,例如java语言,java程序首先通过编译器编译成class文件,如果在windows平台上运行,则通过windows平台上的java虚拟机(VM)进行解释。如果运行在linux平台上,则通过linux平台上的java虚拟机进行解释执行。所以说能跨平台,前提是平台上必须要有相匹配的java虚拟机。如果没有java虚拟机,则不能进行跨平台。
  • 相关阅读:
    Linkerd 2.10(Step by Step)—将 GitOps 与 Linkerd 和 Argo CD 结合使用
    Linkerd 2.10(Step by Step)—多集群通信
    Linkerd 2.10(Step by Step)—使用 Kustomize 自定义 Linkerd 的配置
    Linkerd 2.10(Step by Step)—控制平面调试端点
    Linkerd 2.10(Step by Step)—配置超时
    Linkerd 2.10(Step by Step)—配置重试
    Linkerd 2.10(Step by Step)—配置代理并发
    本地正常运行,线上环境诡异异常原因集合
    Need to invoke method 'xxx' declared on target class 'yyy', but not found in any interface(s) of the exposed proxy type
    alpine 安装常用命令
  • 原文地址:https://www.cnblogs.com/littleswan/p/11323776.html
Copyright © 2011-2022 走看看