分享

C语言和C 哪个效率更高?老司机3句话告诉你答案

 挑燈看劍r7wtm5 2019-08-04

很多小伙伴都会有这样的疑问,C语言和C++执行效率上哪一个更高呢?

针对这样的问题,今天我们就一起来看一下吧!

C语言C++

1.开发效率

当代码量比较小的时候,使用c语言可以很方便的就完成代码的开发和维护,但是当代码量达到一定数目以后,c++面向对象的思想的优势就很好的体现出来了,这种思想使代码重用更加高效。

2.执行效率

从语言特性角度上来看,C++是C的超集。

(C++) - C的这部分语言特性中有很多会降低执行效率。一个例子是dynamic_cast,执行一个dynamic_cast要消耗100-300个CPU cycles,因为机器要跳到一段特别的snippet(一小段程序)去检查type inheritance。

除了语言特性,通常比较语言也会比较它们的标准数据库。

例如C++中std::sort函数肯定比C语言中的qsort快(因为template function的优点),但是C++中的iostream系列又比C的printf系列慢几乎3倍,但是由于C++标准库功能比C语言大得多,许多时候我们可以用较少的开发时间就在C++中实现相同的算法。

另外,不同编译器对语言的执行效率影响也很大。

C语言和C++哪个效率更高?老司机3句话告诉你答案

C语言C++

3.C++相对于C的抽象,相较于直接用C的实现,效率如何呢?

  • 异常:对于GCC C++用的dwarf异常比C里面模拟实现用的longjmp时间效率要高,毕竟他记录了哪些callee-saved 寄存器是需要恢复的,用空间换了些时间。
  • 返回结构体对象:C++支持对于非POD执行返回拷贝优化,C99结构体由于都是POD,有的版本依然不能支持返回拷贝优化。
  • 虚函数:这种抽象,C实际有2种实现,一种就是照搬C++的实现,显然效率不会有太多差别;第二种是让每个对象持有每个虚函数的函数指针,初始化慢些且对象或者虚函数多了也特别费内存,但是调用虚函数时少了一次间接寻址,而且还可以运行期修改这个函数指针的值。
  • C++函数模版(operator <) vs C函数指针定义concept(qsort的比较函数指针):本质是生成多份实例用空间换时间 VS 用函数调用解耦可复用代码和不可复用代码从而避免可复用代码产生多份实例,前者占用内存多点但少了些许跳转对流水线友好,后者占用内存少点但多了些函数跳转对流水线不友好。

一句话总结:不能简单地说C和C++哪个效率更高。它们各有各的特性,如何利用它们各自的特性生成运行效率优秀的程序,是一个程序员应该思考的事情。

C语言和C++哪个效率更高?老司机3句话告诉你答案

C语言C++

加C/C++学习交.流群获取C语言、C++、Windows高级编程,MFC框架编程、QT框架编程,Linux应用程序开发,Linux内核研究等系统学习路线,更有进阶干货的直播免费学习权限 ,都是大牛带飞 让你少走很多的弯路的 群...号是 546912356

注:加..群要求

1、零基础,目前遇到困难不知从何下手可以加。

2、在公司待久了,过得很安逸,但跳槽时面试碰壁。需要在短时间内进修、跳槽拿高薪的可以加。

3、基础非常扎实,但对目前主流技术欠缺,需要突破技术瓶颈的可以加。

4、觉得自己很牛B,一般需求都能搞定。但是所学的知识点没有系统化,很难在技术领域继续突破的可以加。

5.企业一线C/C++高级大牛直播讲解知识点,分享知识,多年工作经验的梳理和总结,带着大家全面、科学地建立自己的技术体系和技术认知!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多