V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
HojiOShi
V2EX  ›  Android

为什么在 Linux 下构建 APK 比用 Windows 快非常多

  •  
  •   HojiOShi · 1 天前 · 4502 次点击

    我用两台机器,一台 5600X 一台 7950X 。 5600X 那台装的是 Ubuntu 24.04 ,7950X 那台装的是 Windows 10 。 两个系统都已经更新到最新补丁,已经尽可能清空后台程序,且内存存储非常富裕。

    对公司项目使用命令行工具构建出 release 版本的 APK 并且计时。 结果测速发现 7950X 构建花了 7 分 8 秒,5600X 花了 5 分 12 秒。是的你没看错,测了三次都差不多这结果。 更离谱的是 5600X 我甚至还把项目文件放在机械硬盘上的,没想到还是被碾压了。

    公司项目也没啥特别的:AGP 8.9 代码规模也就 6w 行左右 过八成 java+不足两成 kotlin ,没有 native 代码,就这个样子。 构建任务:构建一个大的 app 模块的 3 个 variant (全 java )和两个小的 app 模块(全 kotlin ),总共 5 个 APK 文件。这三个模块除了共享了定义数据协议结构的库以外基本独立。测试之前已经预先构建过,用于把依赖下载完整,所以不存在网络波动导致的时间差异。

    原本以为 7950X 的构建速度上理应碾压 5600X 的,就算系统不同,也不应该有这么大的差距。 实在想不出为什么会有这样的结果。 在 Windows 上我还特意用了Microsoft Build of OpenJDK 21的。

    24 条回复    2025-03-19 14:22:57 +08:00
    heiher
        1
    heiher  
       1 天前
    Windows 试试关闭任何杀毒或防护监控软件。
    tool2dx
        2
    tool2dx  
       1 天前
    把步骤用时都打印出来啊,我这里 debug 版本都差不多。

    release 的话,很多 CPU 时间都花在了 assets 压缩上面,也许你的 5600X 对压缩算法有特别优化。
    codehz
        3
    codehz  
       1 天前 via Android   ❤️ 2
    windows 启动进程速度天然会慢很多,安卓构建需要开一堆进程,这一点就会消耗大量时间了
    liyafe1997
        4
    liyafe1997  
       1 天前   ❤️ 2
    盲猜文件系统系统,盲猜是由于安全软件(特别是 Windows Defender )引起的
    YsHaNg
        5
    YsHaNg  
       1 天前 via iPhone
    Windows 开 dev drive 扔进去再试
    HojiOShi
        6
    HojiOShi  
    OP
       1 天前
    @heiher @liyafe1997 用 Defender Control 关了 WD 之后,7950X 的时间缩短到了 5 分 51 秒,效果显著但和 5600X 仍有差距。
    smartruid
        7
    smartruid  
       1 天前 via iPhone
    你在 windows 上用 wsl 也会更快
    HojiOShi
        8
    HojiOShi  
    OP
       1 天前
    @tool2dx @codehz 姑且用 --profile 再跑了一次。
    这东西好像坏了,点 Task Execution 看不到每个任务的执行时间,也可能是我没是经过 Android Studio 的,只用命令行工具导致的行为变动。

    但发现了个有意思的现象:全 java 的大 app 模块构建花了 3 分钟以上,7950X 也不过多了十秒钟构建时间;而时间差距基本全集中在了那两个全 kotlin (可能也不是全 Kotlin ,至少依赖的协议库用 java 的)的小 app 模块构建任务上。
    mayli
        9
    mayli  
       1 天前
    盲猜是杀毒软件,windows 11 还专门为这个做了个 dev drive, 相当于默认整盘白名单,可以用那个试下。如果还有差距,那就是系统优化方向差异了,linux 大部分优化是注重吞吐量,牺牲延迟,windows 相反,所以有些重量级场景,比如编译大项目,就会慢。
    mayli
        10
    mayli  
       1 天前
    还有个可能的是处理器问题,5600 的话是单 ccx, l3 的命中率可能会比多 ccx 的高,假如 java 编译比较吃这个,那就有可能 7950x 会慢。
    flynaj
        11
    flynaj  
       1 天前 via Android
    不用怀疑,NTFS 的性能确实不如 ext4 ,但是影响整体编译速度差距也只是在 20%,过高按照这个设置一下, https://stackoverflow.com/questions/6916011/how-do-i-get-windows-to-go-as-fast-as-linux-for-compiling-c
    debuggeeker
        12
    debuggeeker  
       1 天前
    之前电脑安装黑苹果,同样的配置,黑苹果打包同一个项目速度是 win10 快很多,没测试过 Ubuntu
    xdeng
        13
    xdeng  
       1 天前
    傻 x Defender
    ByePrd
        14
    ByePrd  
       1 天前
    MS: ./gradlew.bat build --scan
    ByePrd
        15
    ByePrd  
       1 天前
    @ByePrd #14 Linux: ./gradlew build --scan ,看下耗时对比。
    gaifanking
        16
    gaifanking  
       1 天前
    遇到过,同一台电脑上 wsl 编译比 win11 快。同样百思不得其姐
    HojiOShi
        17
    HojiOShi  
    OP
       1 天前
    @mayli #10 这个原因挺新鲜的。

    @flynaj #11 感谢,步骤挺多,以后再看看。

    @debuggeeker #12
    @gaifanking #16
    吼,看起来确实不是个例。

    @ByePrd #14 #15 --scan 上传的信息会暴露一些隐私还没法改,之后我自己看看吧。
    xausky
        18
    xausky  
       1 天前
    很多东西在 Linux 上跑就是比在 Windows 上跑要快很多,文件系统,内核调用等等原因,Linux 内核本身也为大吞吐量而优化,其他的都是为顺畅优化,(大吞吐量:30s 完成但是报告进度可能会卡,顺畅:每秒都准确报告进度但是 60s 才能完成),顺便也比在 MacOS 上跑快(因为硬件不同有点虚空论武)
    debuggeeker
        19
    debuggeeker  
       1 天前
    @xausky 要对比也可以,一个超大硬盘,电脑上面同时安装 Ubuntu ,黑苹果,win ,编译同一个项目
    MoeDisk
        20
    MoeDisk  
       1 天前
    文件系统和调度的问题。
    (参照 MTP 协议两者下对比或 FastCopy 策略(
    moefishtang
        21
    moefishtang  
       22 小时 38 分钟前
    好奇 Windows Server 上构建速度与 Windows 有什么差异
    调整高级系统设置里的处理器偏好会不会有作用?
    xausky
        22
    xausky  
       21 小时 30 分钟前
    @debuggeeker 果粉要跟你说:什么,黑苹果也能代表苹果?
    lisxour
        23
    lisxour  
       6 小时 47 分钟前
    楼上怎么全是怪系统的,有没有考虑过工具链不一样?
    huangzhiyia
        24
    huangzhiyia  
       2 小时 11 分钟前
    关闭杀毒软件,关闭索引。效果显著,不过( •̀ ω •́ )y ,顶配 MacBook air 下一个月就到了,彻底和 Windows 说拜拜。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5127 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 08:34 · PVG 16:34 · LAX 01:34 · JFK 04:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.