-1

对于现代编译器来说,“非同步对象通常比同步对象执行得更好”这句话并不总是正确的。

这是我今天多次听到的断言。我对断言有两种不同的解释:

  1. 随着现代编译器的进步,强加在同步对象上的开销可能非常小,以至于可以忽略不计。如果是这样的话,现代编译器是如何实现这个目标的呢?

  2. 在某些情况下,同步对象和非同步对象的性能相同,甚至在某些情况下,同步对象的性能优于非同步对象。我不认为这是可能的,但谁知道呢?

4

1 回答 1

1

一种情况是编译器可以通过线程间转义分析静态确定一个对象永远不会被多个线程访问。然后编译器可以使用非同步版本的方法初始化“vtable”(或任何适当的方法分派机制)。

PS。以上是关于声明的第一种解释。

于 2012-11-21T13:52:22.993 回答