- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想了解 JAVA 中 volatile 变量的性能。
我看到 https://brooker.co.za/blog/2012/09/10/volatile.html当有作者参与时, volatile 读取似乎很慢。我没有看到任何更多的论点或基准提及相同的内容。
AtomicReference lazySet
会如何影响 volatile 变量读取
最佳答案
从硬件 x86 的角度来看,常规读取和 volatile 读取同样便宜。 volatile 读取需要获取由 x86 的 tso 内存模型提供的语义。因此,常规加载和可变加载都具有获取语义并且同样便宜。在软件级别上存在差异,因为 volatile 读取禁止许多编译器优化。
惰性集合不会改变读取器的性能;只是编剧的表现。在 X86 上, volatile 写入是顺序一致的写入;因此需要 [StoreLoad] 并且这需要停止执行任何加载,直到存储缓冲区被耗尽。 lazySet aka orderedSet 将存储放在存储缓冲区中,然后继续。所以它不会拖延 CPU。这纯粹是作家的担忧;不是读者。所以读者不会走得更快或更慢。
对于您的情况:首先确定它是否确实是一个问题。在大多数情况下,许多其他问题正在发挥作用,并且在此级别上进行优化会使代码变得复杂并引入错误。如果这确实是一个问题,我会更关注缓存行上的争用,而不是读取/写入 volatile 变量的开销。
关于使用 LazySet 的 JAVA volatile 变量读取性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62225563/
文章“Atomic*.lazySet is a performance win for single writers”介绍了 lazySet 是一种弱 volatile 写入(从某种意义上说,它充当存
我正在尝试在 Haskell 中构建一个数据结构,它允许在有序的无限列表中进行高效查找。 如果这是 Java,我会做这样的事情: class LazySet { private Iterato
AtomicInteger 的 lazySet 和 set 方法有什么区别? documentation关于lazySet没什么可说的: Eventually sets to the given va
AtomicInteger的lazySet和set方法有什么区别? documentation lazySet 没什么好说的: Eventually sets to the given value.
我想了解 JAVA 中 volatile 变量的性能。 我看到 https://brooker.co.za/blog/2012/09/10/volatile.html当有作者参与时, volatile
我正在尝试将一些 Java 代码移植到 Windows C++,但对如何实现 AtomicLong.lazySet() 感到困惑。我能找到的唯一信息是谈论它的作用,而不是如何实现它,可用的源代码最终在
from django.conf import settings def my_view(self, request, *args, **kwargs): if 'LOCAL' in sett
在this video关于Disruptor ,一个并发框架,提到了 Java 的 Atomic* 类(例如 AtomicLong)的 lazySet 方法。根据documentation ,此方法“
在大多数 JMM 推理中使用的 AtomicXXX.lazySet(value) 方法是什么意思? javadocs 是纯粹的,Sun bug 6275329状态: The semantics are
我正在阅读 Hans 的一篇文章,他认为在 lazySet 或最终变量写入之前也需要 LoadStore。 他展示了一种我无法理解的特殊竞争条件。 http://www.hboehm.info/c++
我是一名优秀的程序员,十分优秀!