1
1
答案取决于你对优化原子的假设。使用原子有两个效果:强制语句的可观察顺序和确保处理器缓存无效。 如果您使用的是英特尔处理器,则可以简单地删除后者的大部分。这是因为处理器保证相同的行为,而不需要进行特定的处理。 然而,对于订购,有一个不同的故事。为了消除排序约束,编译器应该能够证明您没有不同的可观察行为。 实际上,如果您将指针或引用传递给另一个编译单元中的函数,编译器将无法进行优化。另一方面,如果编译器对使用情况有充分的了解,它可以得出这样的结论:不需要内存屏障,并在此基础上消除它们。 消除另一端的记忆障碍是外发研究的一部分,所以你的研究可能不可用,或者可能只涵盖非常简单的案例。
|
apetrai · 我应该如何假设算法使用哪种迭代器类别? 2 年前 |
ridiculous_fish · std::是否保证短路? 2 年前 |
Fabio · 在c中将指针赋给常数指针++ 2 年前 |
johnco3 · 初始化固定C数组成员结构 6 年前 |
mans · 为什么出现此错误:constexpr在此处无效 6 年前 |
juztcode · 在C++中尝试捕获-创建了多少个对象 6 年前 |
Steven Scott · 忽略元素的基于范围的for循环 6 年前 |