社区
C语言
帖子详情
c的过程调用比java的快么?为什么?
xhy_851221
2008-10-13 10:45:42
RT
...全文
247
18
打赏
收藏
c的过程调用比java的快么?为什么?
RT
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
迷途的书童
2008-10-20
打赏
举报
回复
[Quote=引用 1 楼 wuyu637 的回复:]
java是解释执行。c是编译执行。
解释执行就是说,java的语句要在java虚拟机上转换成虚拟机内部代码,然后才转换为本地机器二进制代码。
而编译执行,是编译过程就把语句转换为二进制代码了,运行的时候只要加载就可以。不需要解释。转换。
所以java会比c慢。
[/Quote]
不错,学习。。。
Greg_han
2008-10-20
打赏
举报
回复
来学习一下
lann64
2008-10-20
打赏
举报
回复
[Quote=引用 12 楼 redleaves 的回复:]
速度是和具体实现密切相关的,而非仅仅语言.
C和Java的语言模型不一样,很难说哪种方式快一些(原则上,在简单的场合,C会快一些),只是适用的场合不同.
非要说他们的差距,无非是C可以做到Java做不到的.但这并不意味着C就一定比Java快.
[/Quote]
比快慢当然不是哪个语言快,而是比实现。虚拟机方式比编译成机器码方式慢,这个还需要讨论吗?那是肯定的。
当然,虚拟机方式获得了另外的好处,其一是可移植性大大提高了,其二是从源码到中间码编译相对简单了。
hyyuanqiang
2008-10-20
打赏
举报
回复
re
xhy_851221
2008-10-20
打赏
举报
回复
你说的是部分原因,我认为最主要的原因是:java用堆栈传递参数,而C用寄存器传递。我不太确定,是否有人听说个这个原因?
yang_dk
2008-10-14
打赏
举报
回复
不能简单这么比,尺有所短寸有所长
C和JAVA都是很伟大的编程语言
xyxwangkai
2008-10-13
打赏
举报
回复
编译后的Java程序指令并不直接在硬件系统的CPIJ上执行,而是由JVM执行。JVM是编译后的Java程序和硬件系统之间的接口,程序员可以把JVM看作一个虚拟的处理器。它不仅解释执行编译后的Java指令,而且还进行安全检查。它是Java程序能在多平台间进行无缝移植的可靠保证,同时也是Java程序的安全检验引擎。
所以多了jvm,c就不需要,但就不能向java那样跨平台
xiang_jun
2008-10-13
打赏
举报
回复
主要还是在多一个虚拟机问题上!
goodstudentli
2008-10-13
打赏
举报
回复
学习了。
once_and_again
2008-10-13
打赏
举报
回复
虚拟机
TADICAN
2008-10-13
打赏
举报
回复
java多了一层虚拟机,它自己模拟了计算机的寄存器,堆,栈,模拟的寄存器速度是不可能达到cpu自身寄存器的速度的,它自己管理堆栈也相当于重复做了操作系统已经做过的东西。
从函数调用上讲,上面这个事实已经不可避免的降低了它调用函数的速度。
如一楼所说,它是解释执行的。本来cpu里面的一些机器指令如mov,add等等它都不能直接使用,它有自己的指令集,以编译后的二进制存储,每次它读到一条指令后先要解释是干什么的,然后转换成本机的机器指令,就相当于本来一条本地指令就可以完成的东西,它却要做许多额外的工作(翻译自己的指令成本地机器指令,这是虚拟机做的事),这导致了函数执行速度慢。现在有JIT技术,可以直接把二进制码转换成本地机器指令,但是这导致了其跨平台成为不可能。
当然它跨平台是一种伟大的成功!
zgjxwl
2008-10-13
打赏
举报
回复
恩,同意楼上的,一边解释一边执行(即解释一条语句再执行一条语句)当然会比编译成了机器代码再执行的速度慢了
但是一般还是多用解释执行,因为解释器有优于编译器的一个特性,编译器在编译源代码的时候会产生较长延迟,而解释器直接就可以执行了,延迟较小
wuyu637
2008-10-13
打赏
举报
回复
java是解释执行。c是编译执行。
解释执行就是说,java的语句要在java虚拟机上转换成虚拟机内部代码,然后才转换为本地机器二进制代码。
而编译执行,是编译过程就把语句转换为二进制代码了,运行的时候只要加载就可以。不需要解释。转换。
所以java会比c慢。
redleaves
2008-10-13
打赏
举报
回复
速度是和具体实现密切相关的,而非仅仅语言.
C和Java的语言模型不一样,很难说哪种方式快一些(原则上,在简单的场合,C会快一些),只是适用的场合不同.
非要说他们的差距,无非是C可以做到Java做不到的.但这并不意味着C就一定比Java快.
xianyuxiaoqiang
2008-10-13
打赏
举报
回复
JVM有时还会停下来进行内存清理。c的垃圾处理由程序员自己负责。
zh291
2008-10-13
打赏
举报
回复
jvm有两种方式
一个就是楼上诸兄所说的解释型;
其实他还有一种机制JIT,调用频繁的代码会转换成机器码缓存在jvm中,执行就调用。
ITdogdog
2008-10-13
打赏
举报
回复
C是一种面向过程的结构化语言,可以实现对硬件的编程操作,是高级语言中相对低级的一种语言,编译执行效率都比较高~~当C编译器编译生成一个对象的代码时,该代码是为在某一特定硬件平台运行而产生的。因此,在编译过程中,编译程序通过查表将所有对符号的引用转换为特定的内存偏移量,以保证程序运行.
Java是一种纯面向对象语言,Java编译程序将Java源程序翻译为JVM可执行代码----字节码,再由解释器在运行过程中创立内存布局,然后再通过查表来确定一个方法所在的地址.
所以,相比之下,java的调用是比较慢的.
sunhao_v
2008-10-13
打赏
举报
回复
顶
c 开发与
java
开发_从技术角度讲,为什么c语言比
java
开发的应用要
快
?
以下是在论坛整理出来的答案:1.从编译过来来看,
JAVA
是将.
java
文件编译成.class文件,运行的时候再由
java
虚拟机将.class文件进一步编译成对应的机器码进行指令
调用
。而c语言会预编译成预编译文件,再编译成汇编语言,二进制文件。直接和机器打交道。运行时中间省略了
java
的很多步骤。2.C程序大部分时间会比
Java
快
,但是获得的效率有限。
Java
较慢主要是JIT编译器需要时间编译Jav...
c比
java
运行
快
的原因_C/C++比
JAVA
快
的原因
大多数程序员都认为C/C++会比
Java
语言
快
,甚至于觉得从
Java
语言诞生以来,“执行速度缓慢”的帽子就应当被扣在头顶,这种观点的出现是由于
Java
刚出现的时候JIT编译技术还不成熟,主要靠解释器执行的
Java
语言确实性能比较低下。但是在今天JIT编译技术已经发展成熟之后,
Java
语言有可能在速度上与C/C++争一日长短了吗?这个问题的答案,让我们从两者的编译器谈起。
Java
与C/C+...
什么是
Java
?
Java
能搞什么?为什么用
Java
?
Java
是一门面向计算机的高级编程语言。为什么说他高级?因为他是面向对象的编程语言,那有的小伙伴就要问了,面向对象就高级就了嘛?这是什么逻辑?因为
Java
面向对象,所以它简单易学,相比较C语言和C++等等,
Java
的学习难度大幅度降低,因为很多东西都被写到了jdk里面,我们只需要学习它的理论以及如何从jdk库中
调用
对应的方法解决问题,是不是听起来就比其他的要容易一些,C语言呢,你想要做一件事情,你需要将整个
过程
都完完全全的写出来。而
Java
你只需要学会它如何
调用
。
C
调用
Java
代码 图文详解
通过图文讲解:C
调用
java
方法的
过程
C
调用
java
例子
实验代码已打包,下载地址。实现原理:使用JNI提供的接口来反射得到
Java
方法,进行
调用
。jni.h在JDK里(jdk1.8.0_121/include/)。(通过JNI可以实现
java
调用
C,也可以实现C
调用
java
)HelloWorld.
java
:public class HelloWorld{ public static void main(String[] args){ Syste...
C语言
70,023
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章