`

【浅析】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中采用的是动态链接

...期待您的补充
分享到:
评论

相关推荐

    浅析Java、C/C++、JavaScript、PHP、Python分别用来开发什么?

    C/C++适合开发性能要求极高的系统底层、游戏和桌面应用程序;JavaScript是前端开发的不二选择,并且正在服务器端领域发挥越来越重要的作用;PHP是快速开发网站后台的首选语言;Python则因其强大的库支持,成为在...

    linux c/c++ gdb浅析

    GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。对于习惯了图形界面方式的开发者,如...对于Linux新手而言,通过C/C++语言的程序作为示例,使用GDB进行调试操作,可以更好地理解程序的运行机制和调试过程。

    浅析C/C++对整数除以常量的处理

    ### 浅析C/C++对整数除以常量的处理 #### 一、除法相关的数学定义和性质 在探讨C/C++中如何处理整数除法之前,我们需要了解一些基本的数学定义和性质。 **定义1:** 除法是一种基本的算术运算,用来找出一个数...

    浅析ARM汇编 C语言 C++ 相互调用的方法

    ### 浅析ARM汇编 C语言 C++ 相互调用的方法 #### 一、引言 在嵌入式开发领域,ARM架构因其低功耗、高性能的特点被广泛应用。随着软件开发需求的多样化,不同编程语言间的交互成为了一个重要的技术问题。其中,ARM...

    Java程序与C语言的区分浅析_.docx

    这些差异影响了程序的读写方式,Java的方法更符合面向对象的编程风格,而C语言的方式更为简洁直接。 在安全性方面,Java强调安全编程,例如,它具有内置的内存管理机制,通过垃圾回收自动释放不再使用的内存,避免...

    浅析JAVA与C++的区别.pdf

    "浅析JAVA与C++的区别" Java和C++是两种最流行的程序设计语言,它们之间有很多的相似之处,但同时也存在很多的区别。下面我们将从技术角度对这两种语言的区别进行分析。 一、继承 C++支持类的多继承,而Java采用...

    浅析java、C#、C++及VC之间关系

    本文主要探讨了Java、C#、C++以及Visual C++(VC)这四种编程语言之间的关系和各自的特点,旨在帮助读者理解它们在开发环境中的差异和适用场景。 首先,Java是一种跨平台的编程语言,其运行依赖于Java虚拟机(JVM)。...

    浅析C语言和Java语言的异同.pdf

    浅析C语言和Java语言的异同 本文对C语言和Java语言的异同进行了比较和分析,从它们的起源、特点、开发环境、程序调试过程、应用领域等方面进行了比较和归纳。 1. 起源 C语言是在1970年代初由贝尔实验室的两位...

    浅析C/C++中动态链接库的创建和调用

    在C/C++编程中,动态链接库(DLL, Dynamic Link Library)是一种重要的代码复用机制。DLL文件包含可被多个程序同时使用的代码和数据,它允许开发者将功能模块化,从而减少应用程序的体积,提高系统资源利用率。这篇...

    浅析C/C++ 中return *this和return this的区别

    首先我们知道~ class Test { public: Test() { return this; //返回的当前对象的地址 } ...return *this返回的是当前对象的克隆或者本身(若返回类型为A, 则是拷贝, 若返回类型为A&, 则是本身 )。...

    深入浅析c/c++ 中的static关键字

    深入浅析C/C++中的static关键字 static关键字是C/C++语言中一个非常重要的关键字,它有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。下面我们将详细介绍C/C++中的static关键字。 一、面向...

    浅析C_C++程序运行过程中的动态存储管理

    动态存储管理是计算机中作业在执行前不直接建立分区,而是在作业执行过程中建立的。所建分区的大小可随作业或进程对内存的...本文将以C/C++语言为对象,对其在运行、实现、动态调整策略等方面和内容做以简单的介绍。

    浅析JAVA多线程在安卓应用程序中的应用.pdf

    "浅析JAVA多线程在安卓应用程序中的应用" JAVA多线程技术在安卓应用程序中的应用是非常重要的,尤其是在需要执行耗时操作时,避免了主线程的阻塞,从而提高了用户体验。本文将浅析JAVA多线程在安卓应用程序中的应用...

    浅析《Java程序设计》的微课设计与实现.pdf

    然而,由于Java语言本身具有一定的抽象性和复杂性,很多学生在学习过程中容易对某些重点和难点感到困惑,比如类的概念、多态的重载与重写、接口的概念等,这严重影响了学习效果和应用能力的提升。 微课的设计与实现...

    浅析《Java程序设计》课程的整体教学设计.pdf

    《Java程序设计》课程的整体教学设计是当前计算机专业教育中一个重要的话题,尤其对于培养学生的实际编程能力、项目开发能力以及解决实际问题的能力具有重要意义。教学设计的核心在于如何提高学生的实践能力和理论...

    浅析C++与C语言的几点联系与区别.pdf

    ### 浅析C++与C语言的几点联系与区别 #### 一、引言 随着计算机科学的发展,C语言和C++语言成为了编程领域中极为重要的两种编程语言。C语言以其简洁高效的特点,在系统编程、嵌入式开发等领域占据着不可动摇的地位...

    浅析java中的取整(/)和求余(%)

    浅析Java中的取整(/)和求余(%) Java语言中,取整和求余是两个基本的数学运算符,分别用“/”和“%”表示。下面我们将详细介绍这两个运算符的使用和注意事项。 一、取整运算符(/) 取整运算符是将一个数字...

    浅析c.c++中的指针.doc

    《浅析C/C++中的指针》 C/C++中的指针是编程语言的一大特性,也是其强大之处,本文将对指针的概念、应用及注意事项进行深入探讨。 首先,我们需要理解指针的基本概念。指针是一个变量,它存储的是另一个变量的地址...

    浅析java程序入口main()方法

    浅析java程序入口main()方法 在Java程序中,main()方法是程序的入口,是Java虚拟机(JVM)调用Java程序的起点。下面是对main()方法的详细解释。 main()方法签名 public static void main(String[] args) ...

Global site tag (gtag.js) - Google Analytics