![]() |
1
16
它无法优化它们,因为您已声明变量为
大量 访问内存中的变量时的副作用;它可以更新硬件内存缓存,包括TLB,还可能导致页错误。进程正在执行的内存可能正被另一个进程(如调试器)窥探。 |
![]() |
2
8
|
![]() |
3
5
在某些计算机上,设备I/O被建模为内存读/写。当volatile被正确使用的时候。。。它明确地告诉编译器不要假设变量操作不重要或者可以优化。。。。 |
![]() |
4
4
其他答复强调了
现在,一旦执行对
也就是说,当读取有副作用时,将变量映射到寄存器并不是一个好的做法,最好用函数调用来封装它,这正是你的问题所证明的原因——在某些情况下,它会让人困惑。 但是,它非常有用而且应用广泛。 |
![]() |
Imran · Nim编译器优化标志 7 年前 |
![]() |
Mário Feroldi · 在运行时调用代码中未调用的函数 7 年前 |
![]() |
Artemis · 寄存器与指令之间的差异 7 年前 |
![]() |
pandascope · golang编译器是否使用常数折叠? 7 年前 |
![]() |
Marc · C优化:为什么编译器不将对象视为常量? 7 年前 |