返回顶部
首页 > 资讯 > 后端开发 > Python >java与C 代码运行效率的对比(整理)
  • 597
分享到

java与C 代码运行效率的对比(整理)

2024-04-02 19:04:59 597人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录1、Java 语言的概述2、C 语言的概述3、c 和 java的 编译器对比4、Java程序比C/C++程序慢的影响因素5、结论1、Java 语言的概述 作为一种面向对象的程序设

1、Java 语言的概述

作为一种面向对象的程序设计语言,Java 与 c++极为 类似,但却要比 C++简单的多。它在集成其他语言的特点 和优势的同时又有自己独特的优势。

Java 的主要特点如下:

(1)简单性。Java 可以对内存中产生的垃圾进行自动收集, 大幅度降低了程序的复杂程度,此外,Java 添加了更为实 用的功能的,这使得程序开发更加简单可靠。

(2)平台独 立性。Java 语言在程序编程过程中是先编译成中间码,然 后再进行装载与校验,最后通过翻译出来的不同的机器码 来执行。因此,只要能支持 Java 虚拟机,就可运行各种 J ava 程序。这也是 Java 最吸引人、使用方便的原因。

(3) 面向对象的技术。近年来软件开发中使用最多的就是面向 对象的技术。面向对象技术是指在编程过程中,以一种更 加直观的、人们更容易接受的方式来编程的技术。而 Java 的动态联网编程特性,将面向对象的优势发挥到最大。

2、C 语言的概述

C 语言,作为一种新的程序设计语言,它结合了汇编 语言与高级语言两种语言的优势,使得它的应用更加简单、 普及。如今,C 语言已经应用于各种类型的微型机上。在编写程序时,C 语言可以直接进行程序的编程。因此,C 语言在应用方面十分广泛,具备很强的数据处理能力。C 语言的应用已不仅仅是用于软件开发,各类科研都需要用 到 C 语言。

C 语言的优点:1.是简洁紧凑、灵活方便;2.运算符 丰富;3.数据类型丰富;4.表达方式灵活多用;5.生成目标代码 质量高、程序执行效率高;可移植性高。

因为 C 语言是将 相同数据堆放在一块,这就使得 C 语言的数据存在很大的 安全缺陷,一旦出现意外,所有数据都将丢失。

此外,C 语言在语法限制以及变量的类型上比较宽松,这样就会影 响到程序的安全性。而且 C 语言比其他高级语言的难度大, 完全掌握是很不易的。

3、c 和 java的 编译器对比

Java与C/C++的编译器对比实际上是代表了最经典的JIT编译器与静态编译器的对比,

(注释:JIT编译器,英文写作Just-In-Time Compiler,中文意思是即时编译器。JIT编译器能够将MSIL编译成为各种不同的机器代码,以适应对应的系统平台,最终使得程序在目标系统中得到顺利地运行。 静态编译,就是编译器在编译可执行文件的时候,将可执行文件 需要调用的对应动态链接库(.so或.lib)中的部分提取出来,链接到可执行文件中去,使可执行文件在运行的时候不依赖于动态链接库。)

也很大程度上决定了Java与C/C++的性能对比的结果,

因为无论是C/C++还是Java代码,最终编译之后被机器执行的都是本地机器码,哪种语言性能更高,除了它们自身的api库实现得好坏以外,其余的比较就成了一场“拼编译器”、“拼输出代码质量”的游戏。

当然,这种比较也是剔除了开发效率的片面对比,语言间孰优孰劣,谁快谁慢的问题都是很难有结果的争论,下面我们就回到正题,看看这两种语言的编译器各有何优势。

原因如下:

(1)因为JIT编译器运行占用的是用户程序运行时间,具有很大的时间压力,它能提供的优化手段也严重受制于编译成本。如果编译速度不能达到要求,那用户将在启动程序或程序的某部分察觉到重大延迟,这点使得JIT编译器不敢随便引入大规模的优化技术,而编译的时间成本在静态优化编译器中并不是主要的关注点。

  (2),Java语言是动态的类型安全语言,这意味着需要由虚拟机来确保程序不会违反语言语义或访问非结构化内存。在实现层面上看,这就意味着虚拟机必须频繁进行动态检查,如对象实例访问时检查空指针、数组元素访问时检查上下界范围、类型转换时检查继承关系等等。对于这类程序代码没有明确写出的检查行为,尽管编译器会努力进行优化,但是总体上仍然要消耗着不少的运行时间。

 (3)Java语言中虽然没有virutal关键字,但是使用虚方法的频率却远远大于C/C++语言,这意味着运行时对方法接收者进行多态选择的频率要远远大于C/C++语言,也意味着JIT编译器在进行一些优化,如方法内联时难度要远大于C/C++的静态优化编译器。

 (4)Java语言是可以动态扩展的语言,运行时加载新的类可能改变程序类型继承关系,这使得很多全局的优化都难以进行,因为编译器无法看见程序的全貌,许多全局优化措施都只能以激进优化的方式来完成,编译器不得不时刻注意并随着类型变化而在运行是撤消或重新进行一些优化。

 (5)Java语言中的对象内存分配都是堆上进行,只有方法中的局部变量才在栈上分配。而C/C++的对象则有多种内存分配方式,既可能在堆上分配,也可能在栈上分配,如果可以把线程私有的对象在栈上分配,将可以减轻内存回收的压力,也不需要考虑内存屏障方面的问题。另外,C/C++中主要由用户程序代码来回收分配的内存,这就不存在无用对象筛选的过程,因此效率上(仅指运行效率,排除了开发效率)也垃圾收集机制要高。

(6)因为C是编译型的,直接将源码编译成机器代码;而JAVA是解释型,源码被编译成二进制伪代码,由JAVA虚拟机解释执行。但是,由于C是编译型的,它的可移植性差;而JAVA是解释执行,因此具有很好的移植性,可跨平台运行。

同时:编一个普通的本地应用程序,一般c 要快于java, 编WEB应用,由于c实现的cgi程序基本是进程型,而java application server 的管理servlet采用线程方式,所以,在访问量大的情况下,java有优势。

 (finally)Java语言相对C/C++的劣势上面说了一大堆,倒不是说Java就真的不如C/C++了,相信大家也注意到了,Java语言的这些性能上的劣势都是为了换取开发效率上的优势而付出的代价,动态安全、动态扩展、垃圾回收这些“拖后腿”特性都为Java语言的开发效率作出了很大贡献。何况,也不见得就没有Java的JIT编译器能做,而C/C++的静态优化编译器不能做的优化:由于C/C++编译器的静态性,以运行期性能监控为基础的优化措施它都无法进行,如调用频率预测(Call Frequency Prediction)、分支频率预测(Branch Frequency Prediction)、裁剪未被选择的分支(Untaken Branch Pruning)等,这些都会形成一些Java语言独有的性能优势

4、Java程序比C/C++程序慢的影响因素

1)解释性语言固有开销:java程序在运行时类加载器从类路经中加载相关的类,然后java虚拟机读取该类文件的字节,执行相应操作.而C 编译的时候将程序编译成本地机器码.一般来说java程序执行速度要比C 慢10-30倍.即使采用just-in-time compiling (读取类文件字节后,编译成本地机器码)技术,速度也要比C 慢好多.

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

3)运行时溢出检测开销:在程序运行过程中,java虚拟机要检测数组是否越界,在C 中则不检测.

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

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

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

7)GC巨大开销:java的垃圾回收机制较C 由程序员管理内存效率更低.

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

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

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

5、结论

综上所述,C 语言的运行效率 要比 Java 的高很多(有人说是高10-30倍)。因为 C 语言是属于编译型的,而 Java 语言则是解释型的。Java 语言运行时要先被翻译成计算机能 辨识的二进制代码,然后才能执行。虽然在一些的程序测试 中 C 语言要快于 Java 语言,但这并不是绝对的。在实际中, 要根据不同语言应用范围,才能选择某一语言程序。

到此这篇关于java与C 代码运行效率的对比(整理)的文章就介绍到这了,更多相关java和C 代码运行效率内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: java与C 代码运行效率的对比(整理)

本文链接: https://lsjlt.com/news/123605.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • java与C 代码运行效率的对比(整理)
    目录1、Java 语言的概述2、C 语言的概述3、c 和 java的 编译器对比4、Java程序比C/C++程序慢的影响因素5、结论1、Java 语言的概述 作为一种面向对象的程序设...
    99+
    2024-04-02
  • C++与Java的运行时特性对比
    c++++ 和 java 的运行时特性对比:内存管理: c++ 手动管理内存(静态),java 使用垃圾收集器自动管理(动态)。代码执行: c++ 直接由操作系统执行,java 先编译成...
    99+
    2024-05-16
    c++ java 移动应用程序 并发请求
  • 怎么增加Java代码的运行效率
    这篇文章主要讲解了“怎么增加Java代码的运行效率”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么增加Java代码的运行效率”吧!1,将一些系统资源放在池中,如数据库连接,线程等.在sta...
    99+
    2023-06-17
  • 怎么进行Python运行效率优于C语言的对比
    今天就跟大家聊聊有关怎么进行Python运行效率优于C语言的对比,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Python是个非常流行的解释型脚本语言。C是一个非常流行的编译语言。由...
    99+
    2023-06-17
  • 提升Java代码运行效率的小细节有哪些
    这篇文章主要介绍“提升Java代码运行效率的小细节有哪些”,在日常操作中,相信很多人在提升Java代码运行效率的小细节有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”提升Java代码运行效率的小细节有哪些...
    99+
    2023-06-16
  • java中int转string与string转int的效率对比
    目录int转string与string转int的效率对比string转int,两种方法int转string一般用三种方法string转int问题分析分析一波1、针对传入的字符串为空对...
    99+
    2024-04-02
  • 性能对比:Go语言与C语言的速度和效率
    性能对比:Go语言与C语言的速度和效率 在计算机编程领域,性能一直是开发者们关注的重要指标。在选择编程语言时,开发者通常会关注其速度和效率。Go语言和C语言作为两种流行的编程语言,被广...
    99+
    2024-03-10
    性能分析 编程效率 go vs c go语言 底层开发 标准库
  • Go语言与Java在开发效率方面的比较:优缺点对比
    Go语言和Java在开发效率上的不同:优势与劣势 概述 Go语言和Java都是广受欢迎的编程语言,它们都有自己的优点和缺点。在开发效率方面,Go语言和Java也有着不同的表现。 Go语言的优势 简单易学:...
    99+
    2024-01-31
    java go语言 - 性能 - 并发性 - 静态类型 跨平台应用
  • 整理部分java代码和oracle,mysql,sql server对比数据类型
    搜索了一下网上关于数据类型的对比,几乎没有三种数据库的对比,我就写了一些字段的对比,如果有不对的地方,请各位不吝指教。JAVA字段oracle字段mysql字段sql server字段intnumberin...
    99+
    2024-04-02
  • Java与C#事件处理的对比是怎样的
    本篇文章给大家分享的是有关Java与C#事件处理的对比是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。小编分别介绍Java与C#事件处理,包括介绍在C#中,事件(Even...
    99+
    2023-06-17
  • 如何通过优化php函数来提升代码的运行效率?
    引言:在开发PHP应用程序时,优化代码的运行效率是一个重要的考虑因素。通过优化PHP函数,可以减少代码的执行时间,提高应用程序的响应速度。本文将介绍一些优化PHP函数的方法,并附上具体的代码示例。一、避免重复执行相同的函数当一个函数被多次调...
    99+
    2023-10-21
    函数 优化 PHP
  • 索引算法与Java编程:如何优化程序的运行效率?
    随着大数据时代的到来,数据量的增加导致了程序的运行效率下降,这时我们就需要对程序进行优化。其中一个重要的方向就是索引算法与Java编程的结合。本文将介绍索引算法的基础知识,并且通过Java编程来演示如何通过索引算法来优化程序的运行效率。 ...
    99+
    2023-06-30
    索引 编程算法 并发
  • C++ 内联函数在提高代码执行效率上的优势
    内联函数通过直接嵌入代码来提高执行效率:声明:使用关键字 inline 声明内联函数。优点:提高执行效率、减少代码大小、提高可读性。实战案例:使用内联函数优化计算数组元素平方的函数,消除...
    99+
    2024-04-16
    c++ 内联函数
  • 值得收藏的9个提高代码运行效率的小技巧(推荐)
    目录1. 减小程序计算量 1.1 示例代码1.2 分析代码1.3 改进代码2. 提取代码中的公共部分2.1 示例代码2.2 分析代码2.3 改进代码3. 消除循环中低效代码...
    99+
    2024-04-02
  • C语言中提高代码执行效率的小技巧有哪些
    本篇内容主要讲解“C语言中提高代码执行效率的小技巧有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言中提高代码执行效率的小技巧有哪些”吧!一、方法参数限...
    99+
    2024-04-02
  • Java 封装与继承的实用指南:优化代码,提高效率
    封装和继承是 Java 中的基本概念,可帮助开发者创建可维护且可重用的代码。通过有效地应用这些特性,可以优化代码,提高效率。 封装 封装通过将数据和方法捆绑在类中,隐藏类的内部实现。这提供了以下优点: 数据保护: 私有字段限制对敏感数据...
    99+
    2024-03-12
    导言
  • C++ 性能优化指南:探索提高代码执行效率的秘诀
    c++++ 性能优化涉及多种技术,包括:1. 避免动态分配;2. 使用编译器优化标志;3. 选择优化数据结构;4. 应用缓存;5. 并行编程。优化实战案例展示了如何在整数数组中查找最长上...
    99+
    2024-05-23
    c++ 性能优化 标准库
  • PHP 类与对象性能优化:让你的代码运行得更快
    PHP 是一种广泛使用的通用编程语言,尤其适用于 Web 开发。由于其简洁的语法和丰富的内置函数,PHP 受到许多开发者的青睐。然而,在某些情况下,PHP 应用程序可能会遇到性能问题,影响用户体验和应用程序的整体稳定性。为了解决这些问题,...
    99+
    2024-02-26
    PHP 性能优化 对象 内存管理
  • Golang和Python爬虫的差异:编程难度、开发效率和代码可维护性对比
    Golang和Python爬虫的差异:编程难度、开发效率和代码可维护性对比 在当今互联网时代,爬虫技术的应用日益广泛,并且对于爬虫的开发语言也有了更高的要求。Golang和Python作为两种非常流行的编程语...
    99+
    2024-01-20
    Python Golang 爬虫
  • 阿里云代理的用途与功能提升工作效率,降低运维成本
    阿里云代理是阿里云为用户提供的一项重要服务,它可以帮助用户更高效地管理自己的云资源,降低运维成本。本文将详细介绍阿里云代理的用途和功能,帮助读者更好地理解并利用这一服务。 一、阿里云代理的用途资源管理:阿里云代理可以帮助用户统一管理自己的云...
    99+
    2023-12-18
    阿里 工作效率 用途
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作