免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: redspider
打印 上一主题 下一主题

JAVA比 C++ 高效??  关闭 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2008-09-23 17:49 |只看该作者
原帖由 5毛党党员 于 2008-9-23 17:39 发表



这个理论不是在什么时候都成立吧。。。。

比如有的数据库是c写的,你的数据处理函数也是用c写的,你的就一定比数据库的快吗?

你说的牵涉到处理问题的方法或者算法问题,我指的是纯粹从程序效率本身讨论,不考虑不同方法造成的差异。
否则就没法比了。

论坛徽章:
0
12 [报告]
发表于 2008-09-23 17:50 |只看该作者
原帖由 5毛党党员 于 2008-9-23 17:39 发表



这个理论不是在什么时候都成立吧。。。。

比如有的数据库是c写的,你的数据处理函数也是用c写的,你的就一定比数据库的快吗?


如果是同一个人写,肯定是用c快

论坛徽章:
0
13 [报告]
发表于 2008-09-23 17:54 |只看该作者

说java比c快的,有点严重的逻辑问题。反证法

如果java比C快,第一个java编译器可以用C写,因为之前没有java编译器,那写好第一个java编译器后,为了追求更快的编译速度就可以在C和java中选择一个来重写java编译器。由于java比C快所以自然是java来重写java编译器了。可是那个java编译器是用java写的啊?

论坛徽章:
0
14 [报告]
发表于 2008-09-23 17:55 |只看该作者
原帖由 redspider 于 2008-9-23 17:49 发表

你说的牵涉到处理问题的方法或者算法问题,我指的是纯粹从程序效率本身讨论,不考虑不同方法造成的差异。
否则就没法比了。


可以比,限制在同样的条件下就可以了。比如允许c函数模拟db利用闲暇时间建索引,使用磁盘存储结构等

论坛徽章:
0
15 [报告]
发表于 2008-09-23 17:55 |只看该作者
原帖由 runforu 于 2008-9-23 17:54 发表
如果java比C快,第一个java编译器可以用C写,因为之前没有java编译器,那写好第一个java编译器后,为了追求更快的编译速度就可以在C和java中选择一个来重写java编译器。由于java比C快所以自然是java来重写java编 ...

好乱

论坛徽章:
0
16 [报告]
发表于 2008-09-23 18:00 |只看该作者
原帖由 redspider 于 2008-9-23 17:49 发表

你说的牵涉到处理问题的方法或者算法问题,我指的是纯粹从程序效率本身讨论,不考虑不同方法造成的差异。
否则就没法比了。

如果这么说java效率是不可能超过c的。。。因为c的极限就是java的极限,所有java能做的优化c都可以做

不过实际情况有些偏差,因为不是所有java做的优化,c都做了。。。所以在这些方面,java也许会比c效率高一些

论坛徽章:
0
17 [报告]
发表于 2008-09-23 18:05 |只看该作者

回复 #16 5毛党党员 的帖子

拿一个java优化过的地方和c没优化过的地方比较没意义

论坛徽章:
0
18 [报告]
发表于 2008-09-23 18:08 |只看该作者

说java比c快的,有点严重的逻辑问题。反证法

竟然有人说我那个逻辑很乱,
解释一下,
如果java比C运行快,那么java编译器应该由java来编写。但是现在的java编译器都是用C写的,得出结论与事实不符,证明假设错误。

有人说没有java编译器怎么用java写java编译器,第一个java编译器用C写。然后再用java写个更快的。

论坛徽章:
0
19 [报告]
发表于 2008-09-23 19:02 |只看该作者
原帖由 redspider 于 2008-9-23 17:35 发表

理论上就是: JAVA虚拟机是 C 写的,所以在虚拟机上运行的 JAVA 程序不可能比 C 效率更高。
即使再做优化也是 C 实现的,所以理论上 C 更快。
就是这样了。

你这个推理这的很乱,纠缠在这个逻辑上没任何意义,咱考虑以下问题,你给出你的理解,从工程实际的角度来讲

Java有泛型的,泛型会给程序带来好的性能影响。如果用C实现Java泛型的程序,速度会不会比Java的泛型快?
Java的对象系统,如果用C编写一个对象系统(GObject),会不会比Java快
Java的线程是用户态的,如果在一个没有用户态线程,只有核心态线程的平台下,Java线程的调度开销是不是比C用核心态线程小很多
我说过,虚拟机里可以作一些数值运算向量话的优化,一个面向80x86优化的数值程序,同java虚拟机里面向Core 2优化的程序,同时跑在Core 2机器上,哪个更快?

你不要说“大不了把Java虚拟机里实现XXXX功能的C代码搬出来,跟你Java比嘛”,这个很无赖

论坛徽章:
0
20 [报告]
发表于 2008-09-23 19:19 |只看该作者
原帖由 runforu 于 2008-9-23 17:54 发表
如果java比C快,第一个java编译器可以用C写,因为之前没有java编译器,那写好第一个java编译器后,为了追求更快的编译速度就可以在C和java中选择一个来重写java编译器。由于java比C快所以自然是java来重写java编 ...


你见哪个虚拟机不是C写的了,编译器可以自举,虚拟机自举就成递归了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP