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

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

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