![双 Xeon 是否会缩短 Android Studio 的构建时间?](https://linux22.com/image/1504009/%E5%8F%8C%20Xeon%20%E6%98%AF%E5%90%A6%E4%BC%9A%E7%BC%A9%E7%9F%AD%20Android%20Studio%20%E7%9A%84%E6%9E%84%E5%BB%BA%E6%97%B6%E9%97%B4%EF%BC%9F.png)
我是一名 Android 开发人员,花费了大量的时间在等待上,因此我开始考虑双 Xeon 设置。
例如,我知道对于 3D 渲染解决方案,额外的核心可以几乎线性地提高速度,所以我的问题是 - Android Studio 构建时间是否会减少?如果不是线性的,那么至少会明显增加,使升级值得吗?
我知道 AS 支持多核,但在我出去花钱之前,我只是想确保它能像使用 4 个核心一样使用所有 20 个核心。
如果有人有经验,能够比较双 Xeon 和 i7 设置用于相同项目构建,那将非常有帮助,但任何信息都会有帮助!
-
请注意:
在您建议寻找其他方法来提高速度之前 - 请让我向您保证,我已经尝试了所有方法 - 快速的 SSD、充足的 RAM、所有可能的 Gradle 和 IDE 选项、抽象一些依赖项以便仅为发布版本构建以避免多 dex、最新的 AS 版本、即时运行/ JRebel 等。
答案1
所以我不得不费尽周折才找到答案。就我而言,我的项目和硬件并没有使用所有核心。我用我拥有的不同硬件做了一些基本的基准测试,但要谨慎对待——你应该明白,要求和设置会极大地影响结果。
测试详细信息
以下是我的硬件:
- i7 6700k(4 核)
- i7 3770k(4 核)
- 2 个 Xeon E2650 v4(24 核)
所有产品均以超线程基本时钟运行。SSD 如下:
- 三星 840 EVO 基本 SSD 240GB
- Mushkin ECO2 SSD 240GB
- 三星 SM951 NVMe SSD 250GB
每个驱动器都安装了 Windows 10,因此我尝试通过在计算机之间交换驱动器来测试两件事 - 处理器速度和驱动器速度。
Xeons 和 6700k 有 DDR4 Ram,而 3770k 有 DDR3。
从下往上阅读图表:
因此,这个过程不太科学,需要重复任务几次,然后取平均值。
清理后重建:构建 -> 清理项目,构建 -> 重建项目
重建:构建 -> 重建项目
构建后启动:构建后首次启动时启动并记录 gradle 时间
再次启动:继续启动,无需对暖 gradle 守护进程进行更改
更改一个日志:更改 Java 的 Log.v 中的字符串并重建
安装后没有变化:从按下运行按钮到屏幕打开所需的时间
模拟器启动时间:上述时间减去 Gradle 构建时间
我的结论是:
- 更快的 SSD做节省几秒钟
- 目前,应该坚持使用最快的单核 CPU
希望它能帮助到别人!
PS 尝试在相同的硬件上对 Xcode 版本进行基准测试 - 几乎是相同的故事
答案2
还有一个选项可以提高构建速度:当你使你的应用程序模块化时,它将异步构建,因此每个模块都将占用其 CPU 核心。
还有一件事。注意你的库。例如,在大多数情况下,你不需要整个 google 支持库,排除未使用的部分,或者只导入需要的部分。
还有一件事。我不知道操作系统如何影响构建速度,但我认为它在某种程度上确实会。当我使用 Linux 而不是 Windows 时,构建项目的速度要快得多。
答案3
我尝试在相同的硬件上测量 Android Studio 3.1.4 的速度:Macbook Pro 2011、RAM 4Gb、SSD 240GB Samsung、Core i5 2.4Ghz。我在这台机器上安装了 3 个不同的操作系统:Windows 10、MacOS Hight Sierra 10.13、Ubuntu 18.04。MacOS/Ubuntu 上的平均构建时间(运行命令:gradlew clean build、gradlew clean assembleRelease)比 Windows 上快 30% 左右。
在我的另一台工作机器上:Core i5 3.0 Ghz 7400、RAM 16Gb、SSD 250Gb。在 Windows 10 机器上构建时间需要 4.34 分钟。同样的项目在稍慢的处理器上运行,但具有相同的 RAM 和 SSD,并且运行 Ubuntu 16.04,构建时间需要两倍快!!我对结果感到震惊,但我仍然选择 Windows 作为开发机器,因为与类 Unix 系统相比,使用舒适且可用的键盘和软件让我感觉更舒服。即使我必须在 MacOS 和 Ubuntu 之间做出选择 - mac 确实更容易设置一切,而 Ubuntu 对普通人来说太复杂了。选择取决于你。