gpt4 book ai didi

java - CLR 是否执行 "lock elision"优化?如果不是,为什么不呢?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:12:18 25 4
gpt4 key购买 nike

JVM 执行一种称为锁省略 的巧妙技巧,以避免锁定仅对一个线程可见的对象的成本。

这里有一个很好的技巧描述:

http://www.ibm.com/developerworks/java/library/j-jtp10185/

.Net CLR 是否做类似的事情?如果不是,那为什么不呢?

最佳答案

它很简洁,但它有用吗?我很难想出一个例子,编译器可以证明锁是线程本地的。默认情况下,几乎所有类都不使用锁定,当您选择一个锁定的类时,在大多数情况下,它将从某种静态变量中引用,无论如何都会阻碍编译器优化。

另一件事是 java vm 在其证明中使用了逃逸分析。而且 AFAIK .net 还没有实现逃逸分析。逃逸分析的其他用途,例如用堆栈分配替换堆分配听起来更有用,应该首先实现。

IMO 目前不值得进行编码工作。 .net VM 中有很多地方没有优化得很好,但影响更大。

SSE vector 指令和委托(delegate)内联是两个示例,我的代码从中获得的 yield 远远超过此优化。

关于java - CLR 是否执行 "lock elision"优化?如果不是,为什么不呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7029326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com