我尝试了一些基准测试这两个(软件事务内存和原子操作,我猜两者都不一样),虽然我没有做太多使用STM (它似乎很难使用),但我成功地尝试了计数基准,即所有的线程都递增一个共享计数器50mn次,并注意到原子操作比STM工作得更好。
所以我想知道,由于STM还没有完全发展,它们在现实情况下比原子操作执行得更好吗?
是否有人因为性能原因而切换到另一个?请分享信息..
我在网上找到的相关期刊是 Concurrent programming without locks
附注:我使用JAVA作为编程语言。STM :-多首诗。AtomicOperatinn: AtomicInteger。
发布于 2011-05-24 19:00:45
原子操作和STM是截然不同的野兽。特别是,原子操作是非常“低级”的构造-事实上,各种类型的原子操作通常用于实现STM。基本上:
因此,STM系统需要增加额外的记账开销来管理事务更新的复杂性-因此,如果只需要更新单个对象,原子操作几乎总是更快。
此外,您应该意识到,在设计STM系统的最佳方式上没有达成共识-这是一个活跃的研究主题,涉及到许多权衡。因此,在一个STM系统上表现良好的东西可能在另一个STM系统上表现不佳,等等。
例如:我的favourite STM system at the moment is Clojure's -它特别吸引人,因为它支持多版本并发控制,并且从不阻碍读者-这在许多常见场景中提供了显着的性能优势。
https://stackoverflow.com/questions/6109229
复制相似问题