【发布时间】:2014-09-08 08:25:26
【问题描述】:
我在 Intel CPU 和 ARM CPU(Mac/iOS,编译器:Clang)上运行相同的代码。通过分析应用程序,我注意到,在 iOS/ARM 上,原子操作是前 3 项,而在 Intel 上,它们甚至不在前 10 名。是真的吗,在 ARM 上原子操作是 那么多 慢? (相对当然)
【问题讨论】:
-
Herb Sutter 的“原子武器”演讲说 Arm7 和 PowerPC 是 C++ 拥有如此精细的内存排序选项的原因:在那些架构上,顺序一致性非常昂贵,你需要使用宽松的订购以获得合理的性能。
-
哇,谢谢,这非常有用。
-
虽然 Herb Sutter 的演讲非常有趣且富有启发性,但它可能并不能真正解决问题。您应该提供一些代码和反汇编以便更好地理解。
-
比较苹果和橙子只会让你到目前为止。根据基准测试,ARM 系统会快得多,同样,英特尔系统也会快得多。两者都很容易演示。
-
原子操作是前 3 项。我们需要查看代码。原子可以意味着很多事情。我猜您是在谈论来自 C++x11 的 Clang C++ 原子,例如 n2427。 Clang/BSD 是否针对 x86 进行了优化,C++ 标准是否针对 x86 进行了优化,或者 x86 是更好的无锁 CPU。我猜工具或您的代码有问题。我们不知道该工具的版本,甚至没有您的代码。
标签: c++ multithreading arm atomic intel