找回密码
 欢迎注册
查看: 17619|回复: 21

[讨论] C 与 C++ 极限运行效率哪个高?

[复制链接]
发表于 2011-12-31 09:04:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?欢迎注册

×
今天看到如下名言:
Good C++ code is better than good C code ,but bad C++ code is much much worse than bad C code.


后面半句大家肯定认同,前半句呢?
不妨说说你的看法。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-12-31 09:21:03 | 显示全部楼层
说的并不是运行效率吧。
代码的好坏体现在多个方面,可维护性、可移植性之类的也很重要。
运行效率上讲,我认为C++没可能超过C。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-12-31 09:21:25 | 显示全部楼层
1# gxqcn
Good C++ code is better than good C code 

C++有很多C所没有的高级语言的特性,比如类与对象,泛型。这些特性使得C++在某些上层的应用领域,编程变得非常的容易,且编出来的作品 易于阅读,易于维护。
而如果用C来实现同样的功能,代码只可能会特别的庞杂。
我相信一个很简单的原则,代码越少越好。

况且,由于历史的原因,C++肯定 比C要安全很多。
最新的C也只是C99,而最新的C++则是C++0X了,
没有大量的C语言 应用程序设计经验的人 设计软件的周期有多长先不说,就看设计出来之后,肯定会留下大量的安全漏洞的。这应该是C语言在设计上的硬伤。

当然了,不可否认,C语言也能诞生出特别优秀的软件,比如linux,git,但C语言的硬伤还在,他们改不了语言,只能提出一堆的workaround 。workaround 终究还只是workaround ,不是解决问题的根本之计
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-12-31 09:33:25 | 显示全部楼层
呵呵,一口气写这么长的话,
我深知在班门面前不能随便弄斧
可又觉得我不弄的话怎么知道自己与高手的差距。。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-12-31 09:35:16 | 显示全部楼层
晕,答题没打到点子上,
极限运行效率是啥意思,
是不考虑各种情况的quick and dirty的那种原始版本的代码吗
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2011-12-31 09:41:23 | 显示全部楼层
我今年上半年用C写了部分大数算法,
后来跳槽等原因暂时中断了,
现在工作中用C++写算法(之前是用C,因为是嵌入式开发),
感觉C++也蛮不错的,尤其是用比较高级的IDE开发环境,
所以又再反思:到底用C,还是C++进行我的业余开发?

无可否认,C++可以写出非常优美、非常便于维护的代码,
而C可以写出非常轻灵的代码,
但终极运行效率呢?这是我比较在意的,因为我比较追求高手对决的快感。

如果真如引言那样,我是不是该考虑还是用C++写核心算法?
但尽量避开其不必要的开销部分,从而达到鱼和熊掌兼得?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-12-31 09:47:51 | 显示全部楼层
1# gxqcn

老大,
我觉得这话得放在具体的环境里,特别的条件下,才能鉴别个高下来。
不然就跟windows和linux谁更优秀的争论一样,没有答案的
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2011-12-31 09:53:03 | 显示全部楼层
我的意思是比较大的一个工程,如果用C++设计,需要很多类,需要用到复合继承甚至多态等特性,
如果把它完全用标准C改写,效率能否再提高一点?
当然,我指的是有一定编程经验的人士,各自写出的代码都足够高效。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-12-31 09:55:53 | 显示全部楼层
C最新标准是C11,
C++最新标准是C++11(其实就是C++0x)
总之,我的观点还是,要达到极限运行效率,只能放弃各种优越性和便利性,使用最基础的语言特性,在这种极端情况下,C++和C没区别,C++编译器能做的,C编译器也一样能做。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2011-12-31 10:02:10 | 显示全部楼层
说的也是,STL够高效,但要追求极致,往往还是定制来得好,也就是用尽可能原始的东西,
有时为了照顾通用性不得不对效率略有损失。

所以,我对“Good C++ code is better than good C code”持很大的怀疑。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-5-3 04:47 , Processed in 0.047751 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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