BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #52592同步于 2011/5/20
CPP机器人发帖

[合集] C++和Java哪个效率会高些?为什么?

shenlei
2011/5/20镜像同步0 回复
☆─────────────────────────────────────☆ qiumiao (qiumiao) 于 (Wed May 18 20:29:17 2011) 提到: 一个面试题,在其他条件一样的情况下。 各位大牛,这题应该怎么回答好一些。 ☆─────────────────────────────────────☆ wks (cloverprince) 于 (Wed May 18 21:37:24 2011) 提到: 看如何定义效率了。用一星期写一个只用1秒钟执行一遍的程序不算“效率高”。 ☆─────────────────────────────────────☆ qiumiao (qiumiao) 于 (Wed May 18 21:52:42 2011) 提到: 【 在 wks 的大作中提到: 】 : 看如何定义效率了。用一星期写一个只用1秒钟执行一遍的程序不算“效率高”。 : -- 指的是执行效率,不是开发效率 ☆─────────────────────────────────────☆ doubleKO (九头鸟龙) 于 (Wed May 18 22:16:07 2011) 提到: zz 最初可以想到JVM c++并不保证一定效率高于java 就像汇编语言也不保证效率高过c一样 但他们都提供了一种效率更高的机会,首先要你水平够高,才能写出效率更高的程序,否则,即使你用了c++/c甚至汇编,也可能生成的是低效率程序。 其次,对于c++还要看你用的编译器写的水平高低,看你编译时用了什么样优化。 简单一句什么语言执行效率高,简直就是误导。 再说,开发时用什么语言,考虑得远不是执行效率高一个因素,大多数情况下,执行效率是排在很后面的一个不重要因素。 还应该考虑应用场景吧,如c++也可以开发web应用,java也可以开发操作系统,但。。。 【 在 qiumiao (qiumiao) 的大作中提到: 】 : 一个面试题,在其他条件一样的情况下。 : 各位大牛,这题应该怎么回答好一些。 ☆─────────────────────────────────────☆ rebirthatsix (茫犭者-算法盲) 于 (Wed May 18 22:18:04 2011) 提到: 按照代码加壳的理论。。。解释执行的虚拟机代码效率是要比编译完就是x86 asm的c++要低,不过这用到java和c++上未必行得通,不能忽视jvm本身的优化 ☆─────────────────────────────────────☆ wks (cloverprince) 于 (Wed May 18 22:20:16 2011) 提到: 传说JVM会优化程序,让某些程序比C还快。 但是不总是这样。 以上。 ☆─────────────────────────────────────☆ zzcc (Binux <足兆叉虫>) 于 (Wed May 18 23:24:35 2011) 提到: 比如一个极端的python的例子(印象) a.py ================ def add(a): return a+a b.py ================ from a import add for i in range(10000): add(i) 要比 a.cpp ================ int add(int a) { return a+a; } b.cpp ================ for (int i=0; i<10000; i++) { add(i); } 效率要高。 原因是C不会跨文件内联优化。 可以作为优化后能够比C快的一例。 除非极端情况下,程序员的因素要比语言对速度影响要大。我是这么认为的 【 在 wks 的大作中提到: 】 : 传说JVM会优化程序,让某些程序比C还快。 : 但是不总是这样。 : 以上。 : ................... ☆─────────────────────────────────────☆ digiter (rush) 于 (Thu May 19 00:27:34 2011) 提到: 论运行效率,大体上Java比C++要慢些,当然某些情况下Java比C++快也是有不少例子的 小程序C++速度几乎完胜Java,像ACM题这种代码量的比较明显 但是工程项目就不一定了,因为很多项目都不是CPU密集型运算,而且我觉得C++只有用好的情况下才快,用不好也慢 另外从云风那儿得来这么个观点,用什么语言决定了你的思考方式,比如用C的时候你会特别关注运行效率,而用Java时可能更关注设计模式等等 ☆─────────────────────────────────────☆ coolfantasy (Cool) 于 (Thu May 19 07:54:05 2011) 提到: 球带 【 在 rebirthatsix 的大作中提到: 】 : 按照代码加壳的理论。。。解释执行的虚拟机代码效率是要比编译完就是x86 asm的c++要低,不过这用到java和c++上未必行得通,不能忽视jvm本身的优化 ☆─────────────────────────────────────☆ wakaka007 (我是谁) 于 (Thu May 19 08:04:49 2011) 提到: 100分 【 在 doubleKO 的大作中提到: 】 : zz : 最初可以想到JVM : c++并不保证一定效率高于java : ................... ☆─────────────────────────────────────☆ zxsword (小绝) 于 (Thu May 19 08:27:25 2011) 提到: 楼上好多大牛哇 ☆─────────────────────────────────────☆ liyus (IanLee) 于 (Thu May 19 08:31:28 2011) 提到: 都好流弊 ☆─────────────────────────────────────☆ ylzsm2008 (夕辉) 于 (Thu May 19 08:50:55 2011) 提到: 学习了 ☆─────────────────────────────────────☆ xinguohenan (小水) 于 (Thu May 19 08:52:35 2011) 提到: 拜一下各位大牛 ☆─────────────────────────────────────☆ zhangxuemeng (zhangxuemeng) 于 (Thu May 19 08:53:19 2011) 提到: 大牛 ☆─────────────────────────────────────☆ yola (折原玛雅) 于 (Thu May 19 08:57:57 2011) 提到: 崇拜本楼所有大牛 搞了java2年却啥也不懂的飘过 ☆─────────────────────────────────────☆ icicle (凌次方) 于 (Thu May 19 09:05:55 2011) 提到: 进来学习 ☆─────────────────────────────────────☆ YinZhiPing (龙骑士尹志平) 于 (Thu May 19 09:08:39 2011) 提到: 奥卡姆剃刀 c++就是比java快,有什么好说的 ☆─────────────────────────────────────☆ piao325 (随风) 于 (Thu May 19 09:12:13 2011) 提到: 各种牛人 拜一拜 ☆─────────────────────────────────────☆ obsessed (章华) 于 (Thu May 19 09:18:46 2011) 提到: 拜 ☆─────────────────────────────────────☆ ttkl (crown&&满城) 于 (Thu May 19 09:39:41 2011) 提到: 这个,主要还是看人 ☆─────────────────────────────────────☆ buptlong (楚|火属性的小龙|八卦帮之山火贲) 于 (Thu May 19 09:44:05 2011) 提到: 一般认为,C++要比Java快一点 【 在 qiumiao (qiumiao) 的大作中提到: 】 : 一个面试题,在其他条件一样的情况下。 : 各位大牛,这题应该怎么回答好一些。 ☆─────────────────────────────────────☆ shenlei (我爱果子|[路]|天山南北|潇湘隐士) 于 (Thu May 19 09:59:37 2011) 提到: 内牛满面... ☆─────────────────────────────────────☆ xixigugu (熙熙姑姑) 于 (Thu May 19 10:02:00 2011) 提到: 进来学习的 ☆─────────────────────────────────────☆ jbm3072 (老鼠舞棒槌 | 珍爱生命 远离编程) 于 (Thu May 19 10:06:17 2011) 提到: 赞啊.十大贴. ☆─────────────────────────────────────☆ qiumiao (qiumiao) 于 (Thu May 19 10:09:18 2011) 提到: 【 在 rebirthatsix 的大作中提到: 】 : 按照代码加壳的理论。。。解释执行的虚拟机代码效率是要比编译完就是x86 asm的c++要低,不过这用到java和c++上未必行得通,不能忽视jvm本身的优化 : -- 那jvm本身会做哪些优化呢? ☆─────────────────────────────────────☆ buptlong (楚|火属性的小龙|八卦帮之山火贲) 于 (Thu May 19 10:09:50 2011) 提到: 以“eratosthense”筛子算法查找素数为例(这个算法是目前测试编译程序性能的一种流行标准),计算2-200万之间所有的素数 在1。66G双核IBM Thinkpad机器上,2G内存,OS是Ubuntu 7.04 C++(g++ 4.1.2):360ms java(java SE 6):105ms 公平的说,如果有人改变c++优化器的级别,C++将以60ms的时间战胜java 以上转自《CORE JAVA》 怎么说呢,C++和java哪个快,呵呵,It's a question 【 在 buptlong (楚|火属性的小龙|八卦帮之山火贲) 的大作中提到: 】 : 一般认为,C++要比Java快一点 ☆─────────────────────────────────────☆ w41q (追寻内心的平和) 于 (Thu May 19 10:12:04 2011) 提到: 进来学习 ☆─────────────────────────────────────☆ rebirthatsix (茫犭者-算法盲) 于 (Thu May 19 10:13:16 2011) 提到: 我艹。。。求带。。 【 在 coolfantasy 的大作中提到: 】 : 球带 : 【 在 rebirthatsix 的大作中提到: 】 : : 按照代码加壳的理论。。。解释执行的虚拟机代码效率是要比编译完就是x86 asm的c++要低,不过这用到java和c++上未必行得通,不能忽视jvm本身的优化 : ................... ☆─────────────────────────────────────☆ sjgenius (牧云风行) 于 (Thu May 19 10:24:04 2011) 提到: c++ ☆─────────────────────────────────────☆ solon (游侠) 于 (Thu May 19 10:33:22 2011) 提到: 拜ls各位大牛 ☆─────────────────────────────────────☆ karon1988 (七夜の雪) 于 (Thu May 19 10:47:21 2011) 提到: 我是来拜大牛的。。 ☆─────────────────────────────────────☆ tzjz89 (天之骄子) 于 (Thu May 19 10:51:03 2011) 提到: 我看过一本书上说在做正则表达式时,算法一致,java的运行时间是C的几倍吧,好像是6、7倍。 我觉得大多数情况C++是效率比较好的。不能谈不同的人,现在比的是语言,和人没有关系,都用同样的算法,大多数情况下java就是慢一些。 而且java的完全面向对象语言的特性也有一些开销。 比如在类中,java为了实现动态联编,函数(或方法)内部实现机制都虚函数,而C++是自己选择的,C++就是让需要虚函数得人自己用,不需要就不用占空间了。 ☆─────────────────────────────────────☆ tsinlong (YNWA) 于 (Thu May 19 11:04:40 2011) 提到: 拜大牛 ☆─────────────────────────────────────☆ josephbupt (爱乐年华) 于 (Thu May 19 11:23:45 2011) 提到: 要看你怎么写了,要是C中强制使用inline,不就可以高速了么 a.h ================ extern inline int add(int a); a.inl ================ int add(int a) { return a+a; } b.cpp ================ #include "a.h" #include "a.inl" for (int i=0; i<10000; i++) { add(i); } 【 在 zzcc 的大作中提到: 】 : 比如一个极端的python的例子(印象) : a.py : ================ : ................... ☆─────────────────────────────────────☆ lenevo (legend) 于 (Thu May 19 11:24:48 2011) 提到: 不错 ☆─────────────────────────────────────☆ wangjia7 (fighter) 于 (Thu May 19 11:56:30 2011) 提到: 拜~ ☆─────────────────────────────────────☆ ultrajj (羽然) 于 (Thu May 19 12:52:05 2011) 提到: 同拜大牛 ☆─────────────────────────────────────☆ fishlovely (fishlovely) 于 (Thu May 19 13:13:53 2011) 提到: 【 在 qiumiao 的大作中提到: 】 : 一个面试题,在其他条件一样的情况下。 : 各位大牛,这题应该怎么回答好一些。 : -- : ................... java是在JVM环境下编译后执行的,通过JVM执行字节码的效率一般情况下比解释型的执行效率要高。但是具体情况具体对待,不能一概而论~~~~~ ☆─────────────────────────────────────☆ qingyi310 (青衣) 于 (Thu May 19 13:33:50 2011) 提到: 这算是标准的答案了.拜大牛~ 【 在 doubleKO 的大作中提到: 】 : zz : 最初可以想到JVM : c++并不保证一定效率高于java : ................... ☆─────────────────────────────────────☆ lw176493876 (【意涵团】小文子) 于 (Thu May 19 14:04:12 2011) 提到: 球带,都是大牛哇 ☆─────────────────────────────────────☆ ChildCry (能进能退乃真正法器) 于 (Thu May 19 14:16:09 2011) 提到: 占座学习 ☆─────────────────────────────────────☆ AirJay (【BYR★KOBE迷】★六灵寺★彩云之男★) 于 (Thu May 19 14:27:44 2011) 提到: 进来学习 ☆─────────────────────────────────────☆ zhuzhubupt (zhuzhu) 于 (Thu May 19 14:33:51 2011) 提到: 学习 ☆─────────────────────────────────────☆ shengzi () 于 (Thu May 19 14:45:36 2011) 提到: 肯定是C++ ☆─────────────────────────────────────☆ Bluerainer (Blue) 于 (Thu May 19 15:00:21 2011) 提到: 貌似看到有书上说,java不一定慢 ☆─────────────────────────────────────☆ Bluerainer (Blue) 于 (Thu May 19 15:03:42 2011) 提到: “为什么厂家直销的产品比经过N级代理的产品要便宜??? ” ☆─────────────────────────────────────☆ jasondou (熟睡的土拨鼠) 于 (Thu May 19 15:22:42 2011) 提到: c++本质上效率是比java高的。但是有些数据显示:java运行效率却比c++高,这并不是c++本身的问题,而是java本身实现机制做了很多优化,比如:内存池机制等等,这些的内在导致java比c++高。 所以:谁搞谁低真要看谁写,一个好的c++程序员完全可以自己实现类似内存池,从而在同等条件下:c++比java高多了。 ☆─────────────────────────────────────☆ tjjszdxx (可乐佳佳) 于 (Thu May 19 15:33:27 2011) 提到: 理论上C++的效率要高一些,因为占用的资源少 ☆─────────────────────────────────────☆ stfairy (大真似伪、大爱无疆的小楼主) 于 (Thu May 19 15:56:17 2011) 提到: 这个贴太虎了,北邮讲坛么。。 ☆─────────────────────────────────────☆ mymz (好久不见) 于 (Thu May 19 16:50:51 2011) 提到: xue xi ☆─────────────────────────────────────☆ OJ (却像有无数说话|可惜我听不懂) 于 (Thu May 19 20:39:27 2011) 提到: 我前天刚看过这段话 【 在 buptlong (楚|火属性的小龙|八卦帮之山火贲) 的大作中提到: 】 : 以“eratosthense”筛子算法查找素数为例(这个算法是目前测试编译程序性能的一种流行标准),计算2-200万之间所有的素数 : 在1。66G双核IBM Thinkpad机器上,2G内存,OS是Ubuntu 7.04 : C++(g++ 4.1.2):360ms : ................... ☆─────────────────────────────────────☆ czcs321 (IcyCoke) 于 (Thu May 19 20:49:10 2011) 提到: 学习了。 ☆─────────────────────────────────────☆ attackover (AttaCKovER) 于 (Thu May 19 21:01:25 2011) 提到: 会问出这种题的面试官,只能说明他水平还很不到家。 效率高是指高级语言的编码效率,即可编程性更高,还是代码的执行效率更高? 如果以面试官的水平来理解成执行效率的话,其实如果C++不使用指针,那JAVA与C++将有同等的效率,因为可以对于将两者使用相同的编译器中间表示进行表示,并且可以在其上实现相同的编译优化。 当然,加入JVM后,谁的效率更高,从壳的角度来讲,JVM需要解释,所以JVM效率低一些。但C++的指针会阻止很多优化,所以不好说。 最终结论,不好说。个人认为C++高一些,毕竟它灵活一些吧,至少写出高执行效率代码的机会多一些。 【 在 qiumiao 的大作中提到: 】 : 一个面试题,在其他条件一样的情况下。 : 各位大牛,这题应该怎么回答好一些。 : -- : ................... ☆─────────────────────────────────────☆ txmm (你被tx啦!) 于 (Thu May 19 21:14:48 2011) 提到: 学习 ☆─────────────────────────────────────☆ kaokao2011 (要给力) 于 (Thu May 19 22:05:07 2011) 提到: 围观大牛解释 ☆─────────────────────────────────────☆ suntengxiao (KTY) 于 (Thu May 19 22:16:55 2011) 提到: 啊 ☆─────────────────────────────────────☆ fentoyal (长风长歌) 于 (Thu May 19 22:50:30 2011) 提到: 大家都在讨论的C艹 是什么啊?
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。