我想知道在多核arm芯片上运行dalvik+jit对单核芯片是否有惩罚?
例如,如果在我的Android系统构建中禁用多核支持并用单个CPU内核执行整个电话,当运行单线程Java基准时,我会获得更高的性能吗?
多核上的内存屏障和同步的成本是多少?
我这么问是因为我非常清楚地记得看到单核手机和双核手机的单线程基准测试分数。只要兆赫差不多,这两款手机就没有大的区别。我原以为双核手机会慢下来……
最佳答案
简单的回答是“你为什么不试试看看呢?”
复杂的答案是:
进行多核同步有成本,但拥有多核也有好处。毫无疑问,您可以设计一个病态的情况,在这种情况下,程序会受到同步原语的额外开销的影响,从而严重影响它们的性能。这通常是由于锁定的水平太深(在您的快速循环内)。但在一般情况下,其他十几个系统程序能够在其他内核上获得CPU时间,以及内核服务中断和IO,而不是中断您的进程,这一事实可能会大大超过MP同步带来的损失。
回答您的问题时,DSB可能需要几十到几百个周期,而DMB的成本可能更高。根据实现的不同,独占加载存储指令可以非常快也可以非常慢。WFE可以消耗几微秒,但如果您没有遇到争用,则不需要它。