C和C++哪个效率更高?

论坛 期权论坛 期权     
C语言与程序设计   2019-6-29 20:29   1599   0
前几天发了一篇推送涉及c和c++,评论区大家对c和c++哪个效率更高这个问题比较感兴趣,今天小编就和大家一起讨论一下这个问题!

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

执行效率从语言特性角度上来看,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的抽象,相较于直接用C的实现,效率如何呢?
  • 异常: 对于GCC c++用的dwarf异常比C里面模拟实现用的longjmp时间效率要高,毕竟他记录了哪些callee-saved 寄存器是需要恢复的,用空间换了些时间。
  • 返回结构体对象:C++支持对于非POD执行返回拷贝优化,C99结构体由于都是POD,有的版本依然不能支持返回拷贝优化。
  • 虚函数: 这种抽象,C实际有2种实现,一种就是照搬C++的实现,显然效率不会有太多差别;第二种是让每个对象持有每个虚函数的函数指针,初始化慢些且对象或者虚函数多了也特别费内存,但是调用虚函数时少了一次间接寻址,而且还可以运行期修改这个函数指针的值。
  • C++函数模版(operator
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:20
帖子:4
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP