一、前言
1. 编译器优化介绍
-
硬件优化:
- 内存访问速度低于 CPU 处理速度,使用硬件高速缓存(Cache)加速内存访问。
- 现代 CPU 指令可以乱序执行,以充分利用指令流水线,提高执行速度。
-
软件优化:
- 程序员优化:在编写代码时进行优化。
- 编译器优化:
- 将内存变量缓存到寄存器。
- 调整指令顺序,充分利用 CPU 指令流水线,如重新排序读写指令。
- 对常规内存进行优化时,这些优化通常是透明且高效的。
-
内存屏障:
- 解决编译器优化或硬件重新排序引起的问题。
- 内存屏障确保特定顺序执行的操作之间的顺序性。
- Linux 提供了一个宏函数
void Barrier(void),通知编译器插入一个内存屏障(仅对编译器有效,对硬件无效)。
2. volatile 关键字
- 数据流分析:
- 编译器技术,通过分析程序中变量的赋值、使用和失效位置,进行常量合并、传播等优化。
- 有时这些优化不符合程序需求,此时使用
volatile关键字禁止这些优化。
二、volatile 详解
1. volatile 的定义和作用
- 定义:“易变的”。

最低0.47元/天 解锁文章
2711

被折叠的 条评论
为什么被折叠?



