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

为什么 Java 在 Windows 上编译比 Linux 慢这么多

  •  1
     
  •   sprite82 · 2022-09-25 13:39:38 +08:00 · 6037 次点击
    这是一个创建于 825 天前的主题,其中的信息可能已经有所发展或是发生改变。

    主机是 win10,虚拟机是 Debian ,cpu 是笔记本的 amd 4800h

    项目地址 https://gitee.com/y_project/RuoYi-Vue.git

    win10 要 7.8 秒,Linux 上只要 3.2 秒, 都是 1.8.0_191, win 上也关闭了 defender 对文件夹的扫描

    第 1 条附言  ·  2022-09-25 20:18:38 +08:00

    https://www.zhihu.com/question/504442976 知乎上找的一个答案,不是 Java 的编译,讲的是小文件访问性能问题

    另外还有个 i5-10500 台式机的,这个 cpu 单核参数跑分和 4800h 是很接近的,win10 主机编译成绩是 4.5 秒,Linux 虚拟机是 3.1 秒多。虚拟机上 amd 和 Intel 成绩几乎一样,win上i5这个时间还比较复合我的预期

    第 2 条附言  ·  2022-09-27 20:51:30 +08:00
    执行的命令 :mvn clean compile
    27 条回复    2022-09-27 20:51:52 +08:00
    iluolSNS
        2
    iluolSNS  
       2022-09-25 14:02:18 +08:00
    @kkocdko thx
    sprite82
        3
    sprite82  
    OP
       2022-09-25 14:05:49 +08:00
    https://www.zhihu.com/question/504442976 知乎上找的一个答案,不是 Java 编译,讲的是小文件访问性能问题
    sprite82
        4
    sprite82  
    OP
       2022-09-25 14:11:53 +08:00
    另外还有个 i5-10500 台式机的,这个 cpu 单核参数跑分和 4800h 是很接近的,win10 主机编译成绩是 4.5 秒,Linux 虚拟机是 3.1 秒多。
    虚拟机上 amd 和 Intel 成绩几乎一样,Windows 上也差的这么多
    iamwin
        5
    iamwin  
       2022-09-25 14:17:43 +08:00
    你把反病毒的东西关了试试看
    ShuA1
        6
    ShuA1  
       2022-09-25 14:24:49 +08:00
    IO 性能的问题, 这也是为啥有的程序员喜欢用 Mac
    ShuA1
        7
    ShuA1  
       2022-09-25 14:25:41 +08:00
    @iamwin 可能有原因,最主要的原因主要是 Windows IO 层的问题。
    sprite82
        8
    sprite82  
    OP
       2022-09-25 14:36:56 +08:00
    @iamwin 已经排除 Jdk 和代码所在文件夹了,没排除之前,也就比现在多零点几秒

    @ShuA1 io 肯定有关联,你看我 #4 发的,Intel 那个成绩 比较符合我的预期,有差距,但不应该这么大
    imzcg2
        9
    imzcg2  
       2022-09-25 14:55:25 +08:00
    建议把开发环境转移到 wsl2 里
    mmdsun
        10
    mmdsun  
       2022-09-25 16:54:43 +08:00 via iPhone
    因为 Windows 对文件做了太多额外的处理,NTFS 也有很多不需要的日志和选项可以关闭。比如:Windows 上拷贝文件都有一个“暂停”的按钮,暂停后 U 盘、磁盘拔掉,下次再插入点“继续”还能接着复制,进度也不会中断。

    要速度就用 WSL 2 吧。编译速度比原生 Ubuntu 都要快,拿 ThinkBook 14 实测的。
    Goooler
        11
    Goooler  
       2022-09-25 17:42:04 +08:00
    Linux > Mac > Win
    ZhiyuanLin
        12
    ZhiyuanLin  
       2022-09-25 18:15:27 +08:00 via iPhone
    加 Windows Defender 白名单,关闭 BitLocker ,都能快点
    flynaj
        13
    flynaj  
       2022-09-25 18:24:36 +08:00 via Android
    文件系统,ext4 性能比 NTFS 好
    seaswalker
        14
    seaswalker  
       2022-09-25 18:30:24 +08:00 via iPhone
    wsl2 速度快得多,能和 m1 mbp 一致了
    ysc3839
        15
    ysc3839  
       2022-09-25 19:13:31 +08:00 via Android
    @mmdsun 暂停那个功能要传一个 COPY_FILE_RESTARTABLE 参数进去的,不传的话理论上不会影响性能吧
    mmdsun
        16
    mmdsun  
       2022-09-25 19:22:48 +08:00 via iPhone
    @ShuA1 也可能是 NTFS 文件系统原因,换 ext3 ,ext4 试试看。
    geekvcn
        17
    geekvcn  
       2022-09-25 21:28:25 +08:00 via iPhone
    NTFS 4K 性能比 ext4 高好不好,windows 如果你装了杀毒软件,输出目录没加白名单,杀软会影响性能
    vhwwls
        18
    vhwwls  
       2022-09-26 01:46:29 +08:00
    @geekvcn #17 楼上那个兄弟表述有误,现在的发行版默认都用 xfs 了,用 ext4 有点开倒车
    chenjiangui998
        19
    chenjiangui998  
       2022-09-26 10:49:55 +08:00   ❤️ 1
    是这样的, i5 12500h, windows java 编译同个项目 maven 离线模式, 单线程 38 秒, linux12 秒, wsl 12 秒. macbook14 m1 pro 10 秒
    多线程 windows 18 秒, linux 9 秒, wsl 9 秒, macbook m1 pro 7 秒
    不插电 windows 45 秒 m1 pro 还是 7 秒
    风扇 windows 起飞, mac 0 转
    续航 windows 2 小时不到, macbook 14 差不多 7 小时
    binge921
        20
    binge921  
       2022-09-26 11:07:43 +08:00
    m1 max 表示 只需要 2.5 秒
    binge921
        21
    binge921  
       2022-09-26 11:10:34 +08:00
    我说错了 m1max 只需要 1.7 秒
    liaotuo
        22
    liaotuo  
       2022-09-26 11:59:19 +08:00
    [INFO] Total time: 2.718 s
    sprite82
        23
    sprite82  
    OP
       2022-09-26 13:52:21 +08:00
    @binge921 太强了,我这多线程编译也就干到 2.7 秒
    chenjiangui998
        24
    chenjiangui998  
       2022-09-26 15:05:32 +08:00
    @sprite82 m1 max 和 m1 pro(10 core) cpu 性能一样, 其实 8 core 速度也基本一样, 淘宝 1.1w 多就能搞下来, java 差距大. nodejs 差距没这么大
    sprite82
        25
    sprite82  
    OP
       2022-09-26 15:59:15 +08:00
    @chenjiangui998 是的,m1 各个版本差不多,maven 大多数时候吃的单核性能,所以核心数不需要太多。目前公司项目运行也就 10 秒以内,实际感受不是太明显
    CodeCodeStudy
        26
    CodeCodeStudy  
       2022-09-27 10:48:00 +08:00
    楼主用的什么命令?我的电脑是 i7-6700 ,win10 ,使用 mvn -Dmaven.test.skip=true -o clean package 平均 10 秒多
    sprite82
        27
    sprite82  
    OP
       2022-09-27 20:51:52 +08:00
    @CodeCodeStudy 执行的命令 :mvn clean compile
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2558 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 10:46 · PVG 18:46 · LAX 02:46 · JFK 05:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.