x86轻松订购性能?

时间:2015-01-20 16:08:42

标签: c++11 x86 stdatomic

由于intel提供了强大的硬件内存模型,使用" memory_order_relaxed"是否有任何优势?在C ++ 11程序中?或者只是保持默认状态"顺序一致"既然没有区别呢?

2 个答案:

答案 0 :(得分:2)

始终使用所需的最低保证来使您的代码正确无误。

不多也不少。

这样,您就可以避免对实现产生任何不必要的依赖,从而降低任何移植成本,并且仍然可以获得最快的程序。

当然,如果您确定自己并不关心移植任何代码,那么在您知道平台无关紧要的情况下采取更有力的保证可能会使其变得更容易。
更难以滥用,更容易推理或更短是完全接受使用性能较低的结构的理由。

答案 1 :(得分:1)

这很大程度上归结为一个问题,即您是否可能希望在具有更宽松内存模型的其他处理器上执行代码。

如果您确定它只能在x86 / x64上运行,那么您可能无法使用memory_order_relaxed获得任何收益。当您将代码移植到其他处理器(例如,POWER,ARM v7及更早版本)时,会发生增益(如果有)。