我想知道在多核ARM芯片和单核芯片上运行Dalvik + JIT是否会受到惩罚?
例如,如果我在Android系统构建中禁用多核支持并使用单个CPU核心执行整个手机,那么在运行单线程Java基准测试时我会获得更高的性能吗?
多核上的内存屏障和同步成本是多少?
我在问,因为我很难记得看到单核心手机与双核手机的单线程基准分数。只要Mhz大致相同,两部手机之间没有太大区别。我原本预计双核手机会慢下来......
答案 0 :(得分:1)
简单的答案是“你为什么不尝试并找出答案?”
复杂的答案是这样的: 进行多核同步需要成本,但拥有多个内核也有好处。毫无疑问,您可以设计一个病态案例,其中程序会受到同步原语的额外开销的影响,因此它会受到性能的深刻影响。这通常是由于锁定在太深的水平(在快速循环内)。但在一般情况下,十几个其他系统程序能够在其他内核上获得CPU时间,以及内核为它们提供中断和IO而不是中断您的进程,这一事实很可能会大大超过由此引起的惩罚。 MP同步。
在回答您的问题时,DSB可能需要数十个或数百个周期,而DMB可能更昂贵。根据实现,独占的加载 - 存储指令可以非常快或非常慢。 WFE可以消耗几微秒,但如果您没有遇到争用,则不需要它。