首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android与iOS -性能问题

Android与iOS -性能问题
EN

Stack Overflow用户
提问于 2014-09-03 10:07:43
回答 1查看 2K关注 0票数 2

我一直在寻找解决方案,至少有两天没有成功,所以作为我最后的希望,我决定在这里问它。

在工作中,我们有一个使用C++的OpenCV代码库,我们希望在iOS和Android上同时运行它。结果发现,整个系统在Android上运行得更慢,我无法找出原因。在分析之后,我们了解到调用C++代码的方法是问题,这在两个平台上都是完全相同的。在安卓(三星)上,执行时间在140-150 ms之间,而在iOS(iPhone 5)上则不到70 ms。我读过一些关于优化本机代码和使用不同local_cflags的文章,但似乎没有帮助。

这是一个需要承认的事实,还是有一个解决办法?提前谢谢你,迈克

EN

回答 1

Stack Overflow用户

发布于 2014-09-03 14:44:30

你的经验和我的很有关系。根据我在iOS和Android上使用iOS的经验(在Nexus 4中,在我的例子中):

  1. 如果您只使用单线程代码,那么Android通常会慢一些。苹果的CPU内核比我在Android手机上测试过的任何核心都要快(见许多在线手机评论),而最新的Android手机有4个或更多核心。在iOS上,OpenCV使用GCD并行运行一些算法,但在Android上不使用OpenMP (这是另一种选择,只适用于GCC 4.x,而不是Clang)。可悲的是,在主线程之外使用OpenMP是件痛苦的事。这只虫子仍然存在于NDK的r10中,所以要么用补丁重新编译工具链,要么被卡在主线程上,这不是计算量大的最佳选择。
  2. 默认情况下,安卓上的OpenCV是用拇指指令编译的,速度更慢。我建议重新编译它设置手臂模式,和霓虹灯。
  3. 自动矢量化标志。如果您在NDK上使用GCC,则必须使用-funsafe-math-optimizations-O3来启用霓虹灯的自动矢量化。
  4. CPU频率的节流。我的Nexus 4似乎比iOS更热情地节流CPU频率。我们已经看到在iOS上运行时间非常稳定的Android代码的时间发生了很大的变化,我们能想到的唯一原因就是CPU频率。Renderscript (请参阅这个答案)使CPU频率最大化,但电池寿命将受到影响(您必须重写代码)。
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25641609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档