hrefspace

 找回密码
 立即注册
搜索
热搜: PHP PS 程序设计
查看: 1184|回复: 9

C 与 C++ 极限运行效率哪个高?

[复制链接]

585

主题

769

帖子

2007

积分

大司空

Rank: 5Rank: 5

积分
2007
发表于 2024-2-22 09:55:52 | 显示全部楼层 |阅读模式
今天看到如下名言:
Good C++ code is better than good C code ,but bad C++ code is much much worse than bad C code.

后面半句大家肯定认同,前半句呢?
不妨说说你的看法。
回复

使用道具 举报

0

主题

168

帖子

4

积分

新手上路

Rank: 1

积分
4
发表于 2024-2-22 09:56:41 | 显示全部楼层
说的并不是运行效率吧。
代码的好坏体现在多个方面,可维护性、可移植性之类的也很重要。
运行效率上讲,我认为C++没可能超过C。
回复

使用道具 举报

0

主题

180

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2024-2-22 09:57:33 | 显示全部楼层
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 ,不是解决问题的根本之计
回复

使用道具 举报

275

主题

454

帖子

1014

积分

大司空

Rank: 5Rank: 5

积分
1014
发表于 2024-2-22 09:58:32 | 显示全部楼层
呵呵,一口气写这么长的话,
我深知在班门面前不能随便弄斧
可又觉得我不弄的话怎么知道自己与高手的差距。。
回复

使用道具 举报

0

主题

163

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2024-2-22 09:58:43 | 显示全部楼层
晕,答题没打到点子上,。
极限运行效率是啥意思,
是不考虑各种情况的quick and dirty的那种原始版本的代码吗

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

0

主题

156

帖子

125

积分

关内侯

Rank: 2

积分
125
发表于 2024-2-22 09:59:36 | 显示全部楼层
我今年上半年用C写了部分大数算法,
后来跳槽等原因暂时中断了,
现在工作中用C++写算法(之前是用C,因为是嵌入式开发),
感觉C++也蛮不错的,尤其是用比较高级的IDE开发环境,
所以又再反思:到底用C,还是C++进行我的业余开发?

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

如果真如引言那样,我是不是该考虑还是用C++写核心算法?
但尽量避开其不必要的开销部分,从而达到鱼和熊掌兼得?
回复

使用道具 举报

0

主题

216

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2024-2-22 10:00:12 | 显示全部楼层
1# gxqcn

老大,
我觉得这话得放在具体的环境里,特别的条件下,才能鉴别个高下来。
不然就跟windows和linux谁更优秀的争论一样,没有答案的
回复

使用道具 举报

0

主题

190

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2024-2-22 10:00:18 | 显示全部楼层
我的意思是比较大的一个工程,如果用C++设计,需要很多类,需要用到复合继承甚至多态等特性,
如果把它完全用标准C改写,效率能否再提高一点?
当然,我指的是有一定编程经验的人士,各自写出的代码都足够高效。
回复

使用道具 举报

0

主题

170

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2024-2-22 10:00:52 | 显示全部楼层
C最新标准是C11,
C++最新标准是C++11(其实就是C++0x)
总之,我的观点还是,要达到极限运行效率,只能放弃各种优越性和便利性,使用最基础的语言特性,在这种极端情况下,C++和C没区别,C++编译器能做的,C编译器也一样能做。
回复

使用道具 举报

0

主题

180

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2024-2-22 10:00:59 | 显示全部楼层
说的也是,STL够高效,但要追求极致,往往还是定制来得好,也就是用尽可能原始的东西,
有时为了照顾通用性不得不对效率略有损失。

所以,我对“Good C++ code is better than good C code”持很大的怀疑。
回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|hrefspace

GMT+8, 2024-11-22 04:09 , Processed in 0.070094 second(s), 22 queries .

Powered by hrefspace X3.4 Licensed

Copyright © 2022, hrefspace.

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