千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:深圳千锋IT培训  >  技术干货  >  为什么C++和别的语言相比运行速度这么快?

为什么C++和别的语言相比运行速度这么快?

来源:千锋教育
发布人:xqq
时间: 2023-10-20 02:30:24

一、C++和别的语言相比运行速度这么快的原因

C++和别的语言相比运行速度这么快,是因为C++是全部翻译后再进行执行的语言,而Java与python、php、ruby、C#是边执行边翻译的语言。C++是C的超集。在(C++) – C的这部分语言特性中有很多会降低执行效率。

一个例子是dynamic_cast,执行一个dynamic_cast要消耗100-300个CPU cycles,因为机器要跳到一段特别的snippet(一小段程序)去检查type inheritance,在内层循环中使用它无非是大大浪费时间。另一个例子是大家都很熟悉的vtable,这里不多说了。

但是一些增加了的语言特性会极大地提高编译器识别并对代码进行优化的能力。最简单的就是inline关键词。在C中程序员是不能显示地告诉编译器要不要inline某个函数,C++有了这个能力,也就是说把控制权更多地交给了写代码的人(虽然最终不一定会inline)。inline和const这两个关键词使得在global constant propagation这个编译器优化过程里,一些在底层函数中,在C里不能被全局识别的常数都能被顺利地展开,这样生成的代码必然比C要快得多。(这一段需要一些编译器优化的知识才能理解)

题外说一句,编译器很重要。说一个之前优化代码的例子:在做循环内的运算优化时,如果运算数据在内存里相邻并对齐,GCC可以检测出来并生成并行代码(在X86上是Intel SSE指令)。最终我通过数据对齐让GCC生成SIMD代码将循环速度提升了20倍。这一点上C和C++收到的效果是一样的。

延伸阅读:

二、C++工作原理

C++语言的程序开发环境,为了方便测试,将调试环境做成了解释型。即开发过程中,以解释型的逐条语句执行方式来进行调试,以编译型的脱离开发环境而启动运行的方式来生成程序最终的执行代码。

开发C++应用程序,需要经过编写源程序、编译、连接程序生成可执行程序、运行程序四个步骤。生成程序是指将源码(C++语句)转换成一个可以运行的应用程序的过程。如果程序编写正确,那么通常只需按一个功能键,即可完成该过程。

名列前茅步对程序进行编译,这需要用到编译器(compiler)。编译器将C++语句转换成机器码(也称为目标码);如果该步骤成功执行,下一步就是对程序进行链接,这需要用到链接器(linker)。链接器将编译获得机器码与C++库中的代码进行合并。C++库包含了执行某些常见任务的函数(“函数”是子程序的另一种称呼)。例如,一个C++库中包含标准的平方根函数sqrt,所以不必亲自计算平方根。C++库中还包含一些子程序,它们把数据发送到显示器,并知道如何读写硬盘上的数据文件。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

软件帮助文档怎么做?

2023-10-20

为什么说int就是用来表达寄存器的?

2023-10-20

依次插入结点法生成二叉排序树是什么意思?

2023-10-20

最新文章NEW

流行的Java Web框架有哪些?

2023-10-20

为什么Debug Information Format改为DWARF可以提高编译速度?

2023-10-20

MySql什么是数据库架构设计?

2023-10-20

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>