高性能计算——编译

本文探讨了高性能计算中编译的重要角色,包括编译的四个阶段:预处理、编译、汇编和链接。强调了跨过程优化如函数内联和死代码消除,以及链接时优化(LTO)的概念。通过检查编译输出,如汇编代码,可以深入了解程序性能。同时,介绍了如何利用静态库和仅头文件库进行优化。
摘要由CSDN通过智能技术生成

高性能计算——编译



学习汇编语言的主要好处不在于用它编写程序,而便于理解在代码编译执行过程中发生的事情及其对性能的影响。

确实有会存在一些比较少见的情况,我们需要切换到手写汇编以获得最大性能,但大多数时候,编译器能够自己生成接近最优的代码。当它们做不到这一点时,通常是因为程序员对问题的了解超出了源代码所能推断的范围,但未能将这些额外信息传达给编译器。

在这一部分中,我们将讨论如何让编译器准确执行我们想要的操作,并收集有助于进一步优化的有用信息。

编译的几个阶段(Stages of Compilation)

在直接跳转到编译器优化(这一部分的主题)之前,让我们先简要回顾一下“大局”。跳过一些相对枯燥的部分,C程序转换为可执行文件大致分为四个阶段:

  1. 预处理:展开宏,从头文件中提取包含的源代码,并从源代码中去除注释等。例如:gcc -E source.c(将预处理的源输出到标准输出)。
  2. 编译:解析源代码,检查语法错误,将其转换为中间表示,进行优化,最后翻译成
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

walt3433

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值