V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
misaka9527
V2EX  ›  程序员

wsl2 和 Windows 本机编译性能为什么差距不大

  •  
  •   misaka9527 · 13 小时 39 分钟前 · 1725 次点击
    我之前看见别人说, 在编译和启动速度上,wsl 上的 linux 都比 Windows 强,我使用同一台机器,使用 maven 编译同一个项目,实际对比了下,时间没啥差距,为什么?(注:wsl 我分配的全部核心和 16G 内存,编译的项目也复制到 wsl 内部了)。

    我的 mac mini m1 ( 16+256 )倒是在编译和启动方面都有显著提升,比我的 Windows 电脑(amd R7 5800H + 32G + 512G)快一倍了
    21 条回复    2025-09-11 23:07:28 +08:00
    Yanlongli
        1
    Yanlongli  
       13 小时 33 分钟前
    这个不绝对,有些编程语言的编译器针对 linux 系统有优化
    xgdgsc
        2
    xgdgsc  
       10 小时 58 分钟前 via Android
    java 编译是吃 io 还是 cpu ,node 会不会差别比较大
    aloxaf
        3
    aloxaf  
       10 小时 43 分钟前
    主要是那种喜欢创建一堆进程的构建工具跑起来差别比较大吧
    ca2oh4
        4
    ca2oh4  
       10 小时 36 分钟前
    maven 用什么 wsl
    SonicKang
        5
    SonicKang  
       10 小时 35 分钟前
    mac mini 主要是 io 太有优势了
    xtreme1
        6
    xtreme1  
       10 小时 33 分钟前
    win 主要是 ntfs 处理大量小文件比较慢, java 顶多就几百几千个 .class 其实还好
    murmur
        7
    murmur  
       10 小时 33 分钟前
    5800H 的性能不占优吧,7840 这个级别就好多了
    minami
        8
    minami  
       9 小时 40 分钟前
    他们说的编译速度差距基本是 C/C++那种编译。不过也挺扯淡的,因为影响的变量也太多了。我反正 mac 上装了 linux 容器,用 gcc 编译,实测速度也就那样
    misaka9527
        9
    misaka9527  
    OP
       9 小时 39 分钟前
    @xtreme1 我还试过 Windows 自带的 dev drive , 用 ReFs 来存储源代码和相关库,微软自己说用于编译挺牛的,实际使用起来,效果也不明显
    interim
        10
    interim  
       9 小时 38 分钟前
    maven 指定下构建线程数看看,默认是单线程跑的,两者 IO 差距不大的话不会有大差异的。
    misaka9527
        11
    misaka9527  
    OP
       9 小时 35 分钟前
    @minami 主要我研究相关问题时,搜到的都是说 Windows 的文件系统比 linux 慢,我就换成 linux 试了下,没想到没啥提升,用 Windows 的 ReFs 试了下,效果也不明显,难不成这方面没啥瓶颈,可能最主要还是看 CPU 的频率吧
    misaka9527
        12
    misaka9527  
    OP
       9 小时 33 分钟前
    @interim maven 已经设置了 -T 1C 多线程了, 但是指定线程是多模块构建用的,我是单模块编译,javac 本身好像是单线程编译的
    janus77
        13
    janus77  
       9 小时 33 分钟前
    说明你的项目编译速度已经快拉满了,再提升只能靠硬件了。
    mac 不就是换了个硬件么?不要看都是 16G 就觉得内存一样,其实 mac 的内存和 win 的内存还真有区别的。
    minami
        14
    minami  
       9 小时 30 分钟前
    @misaka9527 #11 ntfs 性能没有问题,msvc 编译甚至比 mingw 还快,当然有些菜鸡都不知道 msvc 怎么开多线程编译,那就没办法了。一般 windows 上编译卡住都是杀毒把磁盘卡住了,完全是误会
    BenjaminSu
        15
    BenjaminSu  
       9 小时 23 分钟前 via Android
    有没有一种可能?
    WSL 的行为,不被防火墙检查,所以比较快?
    Geon97
        16
    Geon97  
       9 小时 17 分钟前
    主要是 io 的问题吧
    yolee599
        17
    yolee599  
       9 小时 14 分钟前 via Android
    因为 wsl 里面的 linux 无论用什么文件系统,最终落盘的时候都会转成 ntfs (假设你用的是这个)保存到磁盘,这一道转换都要浪费不少性能。你试试把磁盘直通 linux 看看
    misaka9527
        18
    misaka9527  
    OP
       8 小时 56 分钟前
    @BenjaminSu 防火墙都关了的
    @yolee599 我看相关文档,说两边系统是隔离的,只要不通过 /mnt 的方式来跨系统访问,应该不会进行转换吧,所以我测试也是将项目放到 wsl 里了
    Ipsum
        19
    Ipsum  
       8 小时 53 分钟前 via Android
    试试用 wsl 在 ntfs 上编译 openwrt ,会慢到你怀疑人生。
    yolee599
        20
    yolee599  
       6 小时 41 分钟前 via Android
    @misaka9527 #18 编译出来的文件也要保存啊,最终可能就是你在 Windows 资源管理器里的 .vmdk 之类的文件,你也可以把编译输出文件夹挂载到 tmpfs ,把它放内存里
    mmdsun
        21
    mmdsun  
       2 小时 23 分钟前
    不可能吧,我 WSL 2 要比 windows 上编译快好多 Java 也快很多。 你是不是 linux 用 /mnt 访问的 windows 磁盘?要 WSL 2 快,全套要在 WSL 2 ,而且不能用 WSLCONFIG 限制 内存 CPU 什么的。
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1265 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 17:31 · PVG 01:31 · LAX 10:31 · JFK 13:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.