![]() |
1
41
它的速度较慢,因为它强制动作以原子方式发生,并充当内存屏障,消除了处理器围绕指令重新排序内存访问的能力。 当您希望操作处于原子状态,并且可以在线程之间共享时,应该使用Interlocked.Increment-它不打算完全替代x++。 |
![]() |
2
16
根据我们的经验,InterlocatedIncrement()等对Windows的影响相当大。在一个示例案例中,我们能够消除互锁并使用++/--来代替。仅此一项就将运行时间从140秒减少到110秒。我的分析是,互锁强制内存往返(否则其他内核怎么会看到它?)。一级缓存读/写大约是10个时钟周期,但内存读/写更像是100个时钟周期。
|
![]() |
3
7
想一想,你会发现
但是,正如您自己测试它所看到的,它们的性能并不相同。
这两种选择有不同的目的。通常使用增量运算符。使用
|
![]() |
4
5
比较慢。然而,这是我所知道的在标量变量上实现线程安全的最有效的通用方法。 |
![]() |
5
3
|
![]() |
6
2
我的性能测试: 电话:65174400
联锁:113248900
|
![]() |
S. Jacson · 任意两台发电机的速度差(内置功能) 2 年前 |
![]() |
Sadeq Dousti · 相当于“嵌套删除”的执行性能SQL查询 2 年前 |
![]() |
Prince · 复制大型文件需要更多时间 2 年前 |
![]() |
Sagar · 为什么在循环之外声明变量会更快? 3 年前 |
![]() |
seco · 如何在不挂起页面的情况下加载JS 3 年前 |