LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: yuzheng

java的速度比c++慢多少?

[复制链接]
发表于 2008-3-21 20:16:24 | 显示全部楼层
Post by yuzheng;1813374
我已经试了一下,java和c++的运行时间之比是 266:230,当然java的是不包括加载的时间。看来可以安心的用java继续写下去了。但是有一个很奇怪的问题,既然java的速度已经接近c++,网上还有那么多人用c++作数值计算能?我选java是因为它的安全性,数组在运行时越界了就会报错,想当初调试c++程序那个痛苦,改为等价的java代码之后运行就保存,数组越界了。


你需要重新学习下 STL : STL 容器有个 at() 方法,越界的时候会抛异常。
回复 支持 反对

使用道具 举报

发表于 2008-3-22 16:30:57 | 显示全部楼层
c++里面可以内联和嵌入汇编,还可以把一些函数声明为从寄存器获得参数,省略参数的压栈,恢复栈,性能的话c++和java确实没法比的
回复 支持 反对

使用道具 举报

发表于 2008-5-4 16:47:58 | 显示全部楼层
Post by xcity;1812727
就速度而言,java在loading的时候比较的慢,主要是因为java的字节码没有完成link的过程,所以在加载的时候,需要做link。这也是为什么java的客户端程序启动都比较慢的原因。但是完全运行起来之后,java的速度并不慢,并且由于java能够动态的利用处理器的扩展api,所以,在默写情况下java的速度甚至可以比c++要快。

每个语言都有一个使用的范围,如果你并不关心加载的速度,那么java很适合你,如果你关心加载的速度,c++更加适合。运行起来之后,速度的区别主要是算法的复杂度,和用c++和java没有太大区别。


说得太对了!
回复 支持 反对

使用道具 举报

发表于 2008-5-5 21:38:00 | 显示全部楼层
如果做企业级应用的程序,用 java 是比较好,一方面它门槛低,另一方面它的开发效率比 C++ 高。但如果做系统级程序,还是用 C/C++ 较好。
回复 支持 反对

使用道具 举报

发表于 2008-5-22 13:16:00 | 显示全部楼层
为了实现 地址引用 跟 符号byte 问题,就得多费周章,而C差不多是天生的无视这些(对于算法,指针是重中之重!)
为了实现 汇编 能力,更要中转几层,而C差不多也是天生无视

在基本运算效能利用率上,没有哪种PC上的编程语言能跟C比的。。这是不容置疑的。
在可移植性,开发周期,部署难度等方面,还没有能跟java比的,实为大型项目的首选方案

故而应当考虑的是因时因势而决。。单纯算法,首推C,要java跟上它的效能利用率,除非未涉及到数组扩容、地址引用参数要求,符号等许多问题,只简单的& >> +-/* 这类的计算应该不成问题

最重要的一点是,你喜欢用哪个就用哪个,不必费心找借口,Microsoft 今天都推广了 .net framework,你认为20年前的mov add这样的汇编在算法效率上比它差么,那为什么 bill gates 这么笨哩。。
回复 支持 反对

使用道具 举报

发表于 2008-5-22 13:27:17 | 显示全部楼层
同意上面的老兄.不过说实话天天用Java也会感觉不爽,想回到C的世界.不过,只是想想,真要回到C去做企业管理软件,郁闷死.
回复 支持 反对

使用道具 举报

发表于 2008-6-24 22:22:54 | 显示全部楼层
输入输出用c吧,printf, scanf比cout, cin多的时候快的数量级没试过是不能深刻了解的。
相信玩过ACM的人都知道。
回复 支持 反对

使用道具 举报

发表于 2009-8-8 11:03:40 | 显示全部楼层
facebook的图片存储文件系统是用c++重写的,为什么不用java呢,因为更直接的访问磁盘,更极致的提高性能,所以只能选c++,而不是java。当然c也可以,但是我是觉得支持面向对象的设计更高级!
回复 支持 反对

使用道具 举报

发表于 2009-9-22 18:58:20 | 显示全部楼层
Post by yuzheng;1813374
我已经试了一下,java和c++的运行时间之比是 266:230,当然java的是不包括加载的时间。看来可以安心的用java继续写下去了。但是有一个很奇怪的问题,既然java的速度已经接近c++,网上还有那么多人用c++作数值计算能?我选java是因为它的安全性,数组在运行时越界了就会报错,想当初调试c++程序那个痛苦,改为等价的java代码之后运行就保存,数组越界了。


是否安全得看写程序的人,只要认真些,再进行一定的测试,C++也并不是不安全的,用哪个主要还是看谁实现起来简单高效。因为Java的发展,应用Java相对简单,开发支持多,所以很多方面显得效率不错。可是Java的底层也是以C/C++为基础的。因此C/C++基础应用多一些。这也是可以把Java看作高级语言,而C/C++看作高级也看作中级语言的缘故。
回复 支持 反对

使用道具 举报

发表于 2009-9-23 14:39:45 | 显示全部楼层
c/c++的指针地址越界,的确不安全!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表