c++程序从开发到执行是,代码+编译器++cpu到实际执行的过程

最近读深度探索c++ 对象模型,一个深刻的体会就是
c++ 代码到可执行文件,有漫长的过程,其中编译器为了我们做了太多的事情,尤其是当代c++ 11、c++ 14等等, 预编译,const expr 等等特性,编译器在其中承担了特别重要的角色

c++ 从源码到可执行文件大概有
编译+链接

编译大概 = 预处理、预编译、词法分析、语法分析、语意分析、生成obj 文件
链接大概是个寻找自己所需的东西的一个匹配的过程。

这个过程里面,预处理、预编译,大有文章可做,比如,最最简单的宏展开,比如qt 里面的,预处理之前的代码生成动作,还有当代c++ 的模板推到,const expr 表达式的计算等等

中间词法分析、语法分析的过程,倒是通用的一些过程。
到最后的生成obj 文件,也大有文章可做。

c++编译器的职责,以及cpu 真正执行的职责,只是单纯的确保,单线程条件下,这个指令的执行是迅速的,符合预期的,它并不会考虑多线程的环境,不会考虑生成的二进制代码的可读性。

比如说“深度探索c++对象模型"p171 里面,inline 函数有一个不可思议的性能提升
在这里插入图片描述

对于编译器的这种动作的理解和预见,以及对于编译器在c++ 开发过程中的角色的理解,会一定程度上影响我们生产出来的代码的可读性,稳定性、正确性,在追求代码开发效率和执行效率的时候,很好的理解c++ 标准,以及编译器为我们提供的一些服务,以及整个的代码生成流程,才能在有限的范围内做对我们的程序有益的”优化“------当然,还是那句老话,性能的提升需要实际测试,需要严格的测试环境。

道阻且长,奥里给

-------缺一些活生生的经典的例子,慢慢积累,这个主题会更好

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值