如何提高Android应用的CPU占用率?

dyycdyyc 2018-09-24 05:43:18
没错,我想提高CPU占用率……

我有一个模块需要进行复杂的计算,已经经过了算法优化和硬件加速,但是依然需要很多CPU算力,提高CPU的利用率可以降低计算时间。
在Android的Linux层上测试这个计算任务,CPU占用率稳定为80%~90%;而同样的测试(通过JNI)运行在Android应用层上时,CPU占用率仅为50%~70%,使用top指令查看的总CPU使用率甚至不足70%。

看到top中显示的进程PRI为0,应该是最高优先级了吧……?试过指令renice -20 -p XXX,结果CPU占用率甚至更低了……

再具体一点的话,CPU是4核的,计算任务本身已经做了并行处理,运行期间可能出现的并行线程数为2~8。

假设不考虑用户体验的问题,怎么样才能尽可能地利用CPU?
...全文
1096 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
odineo 2018-11-04
  • 打赏
  • 举报
回复
恰巧我也在研究类似的问题。你的耗时计算是不是运行在子线程上? 我尝试过pthread_attr_setscope,设置为PTHREAD_SCOPE_SYSTEM,sched_setaffinity绑定cpu,两个方案对CPU使用率都没有太大的提升。 创建一个Service,将你的耗时计算放到Service的主线程上,可以让线程所在的CPU满负荷工作。不过这个可能要设计IPC模块。Chromium也是将renderer、GPU放到独立的Service上运作。
r00_a2lBUR 2018-09-29
  • 打赏
  • 举报
回复
改Android的内核了

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧