繁体   English   中英

Android Gradle 构建不使用我所有的 M1 Pro CPU 内核

[英]Android Gradle Build not using all my M1 Pro CPU cores

有什么方法可以设置我的 Android gradle 项目以使用我的 CPU 的所有(更多)内核构建?

我有 MBP M1 Pro,正如您在执行Rebuild Project时所附的图片中看到的那样,它并没有以相同的方式使用我的所有内核。

我的 M1 Pro 有 10 个 CPU 核心,其中 2 个是低性能和 8 个性能。 我想 AS 使用所有 8 个性能核心来构建我的项目。

有我的gradle.properties设置:

org.gradle.caching=true
android.useAndroidX=true
android.enableR8.fullMode=true
org.gradle.parallel=true
org.gradle.daemon=true
org.gradle.configureondemand=true

我也有点玩org.gradle.workers.maxorg.gradle.parallel.threads但我没有看到 CPU 使用率有任何变化。 但也许我只是误解了它的工作原理并设置了不正确的值。

在此处输入图像描述

Rebuild Project代表许多 Gradle 任务和一些 IDE 工作,如文件索引,我认为您的屏幕截图是在中间阶段捕获的,因此我认为影响 CPU 负载平衡的因素是 Z7B5CC4FB56E11DC7520F716EC1763。

但是,Gradle 由于一些限制,不能保证您的 CPU 完全使用:

  1. --parallel用于不同模块的任务并行运行,效果取决于“ 解耦项目”前提条件,您可能需要检查项目状态/依赖关系。
  2. worker用于将一个任务分成几个子“作品”,AGP 从 4.x 开始采用它并积极使用它(将任务划分为微小的作品),如果项目有很多模块(比如说 >50)和资源, 8 核可能比 4 核还要慢,因为workers太多(例如,一个工作可以在 0.1ms 内完成,但 Lock Contention 会浪费更多时间)。 使用最新的 AGP 可能会解决问题,您可以检查 AGP 版本并尝试减少核心数。
  3. 这是一个线程使用截图,通过build scan扫描了一个开源项目tivi构建过程,它显示了并行运行任务的前几帧,我猜它比你的略好,但最终 CPU 内核没有被完全占用。 您可以使用相同的工具分析构建。

tivi 构建扫描

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM