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

关于 cpu 性能和 Java 编译速度的问题

  •  
  •   yunv2 · 62 天前 · 3436 次点击
    这是一个创建于 62 天前的主题,其中的信息可能已经有所发展或是发生改变。
    笔记本处理器是 7840H ( win11 ),台式机处理器是 5700G ( win10 ),硬盘都是 M2 SSD ;

    使用 maven 编译项目时,jdk 版本相同,5700G 是 30s ,7840H 是 37s (已调整到性能模式);
    查看功耗释放,7840H 编译时 40-50w 左右;

    执行的命令是 mvn clean compile ;

    疑问是 7840H 的 cpu 跑分性能(比如 R23 ,cpuz )都高于 5700G ,
    为什么在编译时,速度慢于 5700G ?
    java 的编译速度,到底与什么有关系?
    在网上查询过相关的内容,只是说 Linux 环境编译速度要快于 windows ,并没有这种问题的说明。
    有没有知道的大佬,能解释一下?谢谢
    44 条回复    2024-05-20 16:03:46 +08:00
    sun1991
        1
    sun1991  
       62 天前
    硬盘呢?
    yunv2
        2
    yunv2  
    OP
       62 天前
    @sun1991 硬盘都是 M2 SSD ,笔记本是自带的普通 PCIE4.0 ,台式机是 KC2000
    seaswalker
        3
    seaswalker  
       62 天前 via Android   ❤️ 1
    没啥用,估计照样不如 m1 快
    IvanLi127
        4
    IvanLi127  
       62 天前
    前端代码在 Windows 下编译也慢,在 WSL 里反到快。感觉和硬件没啥关系。op 可以试试 WSL 里是不是也会快些。
    liprais
        5
    liprais  
       62 天前
    把编译目录加到防病毒的例外里面
    yunv2
        6
    yunv2  
    OP
       62 天前
    @IvanLi127 在虚拟机的 linux 环境中试过,速度确实要快
    yunv2
        7
    yunv2  
    OP
       62 天前
    @liprais 项目路径都已添加例外
    kanepan19
        8
    kanepan19  
       62 天前
    还有个说法是 amd 在 win10 下性能比 win11 好
    具体没验证过
    cnbatch
        9
    cnbatch  
       62 天前   ❤️ 1
    打开任务管理器,编译时看看 CPU 频率变动,主要看笔记本电脑有没有降频
    散热不好时 CPU 会主动降频的
    MrKrabs
        10
    MrKrabs  
       62 天前
    编译吃的是通用性能 so please buy Apple Silicon
    kenvix
        11
    kenvix  
       62 天前   ❤️ 19
    别人问原因和解决办法,你 v 的无脑果粉是搁这儿疯狂无脑安利苹果,属实逆天😅
    kenvix
        12
    kenvix  
       62 天前
    试着将电源计划改为卓越性能。

    yazinnnn0
        13
    yazinnnn0  
       62 天前
    编译时 cpu 都跑满了吗?
    youmilk
        14
    youmilk  
       62 天前
    跟杀毒软件也有关
    paopjian
        15
    paopjian  
       62 天前
    变数太多了,跑分高说明综合性能高,而且你这内存频率 硬盘速率什么的额估计也不一样吧, 试试做个内存盘编译个 10 分钟左右的代码?
    chendy
        16
    chendy  
       62 天前   ❤️ 1
    核心数一样,5700G 频率略低,但是功率更高,所以可能就差在这里了?
    编译涉及到的东西太多了,从硬件到系统到软件一串东西每个都可能有影响,所以定位瓶颈不是很好弄
    比如我手里的一个项目,全量编译一轮要 5 分钟,后来把编译器最大内存设置高了就变 30 秒了

    另外吐槽一下提苹果的,楼主也没提苹果设备关苹果啥事
    再吐槽一个提 M1 的,后续型号不清楚,我手里的 M1 纯编译速度比不过同时期旗舰 win 本,只是能效领先很多而已
    Goooooos
        17
    Goooooos  
       62 天前
    WindowsDefender 的排除下相关目录
    BBCCBB
        18
    BBCCBB  
       62 天前
    cpu 分别多少 GHz?
    wxyz
        19
    wxyz  
       62 天前
    1 、检查下是否开启了多线程编译(-T 1C );
    2 、检查网络环境和编译日志,是否涉及下载依赖;
    3 、检查磁盘性能是否一致;
    diagnostics
        20
    diagnostics  
       62 天前
    @kenvix #12 7840H 是 37s (已调整到性能模式);???

    你喷别人无脑果粉,别人提了编译是吃通用性能呀?你不会有阅读障碍吧? OP 的内容没看到,别人的回复也没看到,还是你选择性忽略,只觉得自己就是对的。
    conglovely
        21
    conglovely  
       62 天前
    电源模式->卓越性能 试试
    diagnostics
        22
    diagnostics  
       62 天前
    还有一个,heap 大小也会影响编译性能,尤其是越大型的项目越明显。可以在环境变量里加 JAVA_OPTS=xxxx 试试看,毕竟 Maven 也是 Java 写的
    249239432
        23
    249239432  
       62 天前
    笔记本的 cpu 就算高性能在负载满的情况下,过热也会降频的,看任务管理器就看出来了
    如果不是,那就看看是不是 win11 写数据的时候导致变慢了
    https://finance.sina.com.cn/tech/2021-12-10/doc-ikyakumx3179114.shtml
    还不是,那就问别人
    kenvix
        24
    kenvix  
       62 天前
    @diagnostics #20 哈哈,这就对号入座了?
    kenvix
        25
    kenvix  
       62 天前
    @diagnostics #20 果粉是真的一点 Windows 都不会用啊,到现在都分不清性能模式和卓越性能的区别🤣🤣🤣
    diagnostics
        26
    diagnostics  
       62 天前
    @kenvix #25

    卓越性能默认隐藏(要不是你这回复,我还真不知道)

    平时确实用 mac ,Win 只在台式,没调过这个(不过我很好奇,一个非移动端基数如此庞大的市场,把一个性能按钮隐藏的这么深?对于台式机,默认策略也是降频的?)

    我确实看不上 Win ,不只是因为我用 mac ,而是因为我用了 15 年的 win ,我大二直到乃至工作后 2 年都一直是用 Linux ,从 Manjaro 到 Ubuntu 。

    另外你又选择性忽略了,查看功耗释放,7840H 编译时 40-50w 左右;

    卓越性能会比这个数据好多是? 5700G 的功耗也才 45w (如果我没记错)
    diagnostics
        27
    diagnostics  
       62 天前
    @kenvix #25 另外,如果你没有生理性的疾病的话,那我觉得你比“你认为的跟风 X 、无脑 X 粉”更无脑一点。

    跟风,无脑粉主要有两种原因:

    1. 认知问题:不是每个人都有机会认识到世界,能翻出来的有多少?
    2. 社会认同和归属感:类似于小米粉丝,寻求与其他相同支持者建立联系,以获得社会认同和归属感。

    大众盲目,和小众的盲目都是寻求认同感的一种体现而已,Linux 狂热者(也就是标新立异的那一种),因为学 CS 我也短暂成为后者,我反思,意识到要从自身体会出发,独立思考。

    而你,只会给人贴标签( XX 粉,无脑 XX ),你和标新立异,或者说寻求社会认同的人有啥区别?你实际用过 Apple 产品,对比两者吗,引出自己的独立思考了吗?我自己就去年用了一年安卓手机,还发了对比评价了。

    再例如你的 Github ,你所谓的很多开源大佬,都只是因为工作需要维护,或者给自己一些名声而开源罢了,也有很多大佬不玩开源的。( ps ,我也是因为工作需要,维护了一个 Apache 项目)
    seaswalker
        28
    seaswalker  
       62 天前 via Android
    Mac 确实快,这事我也折腾过,32g 内存+80w 的 5700g 照样被 m1 mbp 吊打
    seaswalker
        29
    seaswalker  
       62 天前 via Android
    @seaswalker 但是在 wsl2 中执行编译,速度就和 Mac 一样了,所以,是 windows 的锅
    kenvix
        30
    kenvix  
       61 天前 via Android
    @diagnostics 😋哥们可没有指名骂人哦,宁自己喜欢对号入座那怎么办
    wxf666
        31
    wxf666  
       61 天前
    不懂就问,Java 编译很复杂吗?不是简单翻译到字节码而已吗?

    复杂的应该都在 JIT 时吧?搜集信息,实时优化,编译成 CPU 指令啥的?


    那应该能参考 TinyCC 的编译速度?毕竟这货也不怎么优化代码,效率和 gcc -O0 相当。。

    即,二十年前的 奔腾 4 CPU ,能(单线程)每秒编译 100W 行 C99 代码成 x86 指令?


    那 Java 项目即使有过亿行代码,现代 8 核电脑,最多不也就等待 10 秒钟,就能编译完成了吗?

    楼主为啥那么在意呢。。

    liprais
        32
    liprais  
       61 天前
    @wxf666 果然是以不懂就问开头的人既不懂也不问
    wxf666
        33
    wxf666  
       61 天前
    @liprais #32 和楼主问的并不 100% 相关,只是有些联系。

    想问的就是,Java 编译应该已经足够快了,还这么在意这个干啥?

    就好比,现在 CPU 内存 硬盘,都很强了,结果还有人天天在意,PC 软件那几 KB 体积啥的。。

    见到这种情况,你不会产生疑问吗?
    yeqizhang
        34
    yeqizhang  
       61 天前 via Android
    @wxf666 有没有可能,楼主不是在意这个编译的时间差,而是对 cpu 性能以及跑分存在疑问
    fredcc
        35
    fredcc  
       61 天前   ❤️ 1
    因为没有提到实际机型,以下均为猜测。
    op 的 7840hs 是笔记本上的,而 5700G 是台式机,散热能力不同。功耗释放 40-50w 是达不到 7840hs 的完整性能的。以其他笔记本的评测参考,笔记本性能释放 40-45w 时 R23 循环跑分多线程也就在 1w4 到 1w5 之间,比 5700G 相差不大。你可以编译时用工具看下 7840hs 的功耗和温度曲线呢。
    geekvcn
        36
    geekvcn  
       61 天前
    台式机内存跑在 1:1 模式,笔记本为了省电内存跑在 2:1 甚至 4:1 模式,编译不但是计算密集型还是 IO 密集型任务
    msg7086
        37
    msg7086  
       61 天前
    @wxf666 #31 不太清楚楼主说的编译是不是只是说编译。一般项目构建的时候不光要编译,还要执行测试,生成测试覆盖报告,生成 javadoc ,打包二进制等等其他步骤。如果只是做编译,上百个文件也就几秒钟编译完了。
    wssy001
        38
    wssy001  
       61 天前
    建议用 `mvn clean compile -T 1C` 这样可以调用全核资源进行编译 我这边用一个微服务项目测试了一下不带`-T 1C`参数和带了的区别 前者耗时 `27.043 s`,后者耗时`12.091 s` 测试`CPU` 为 `M3 Pro`
    katfao
        39
    katfao  
       61 天前 via Android
    7840h 作为笔记本 u ,性能比起散热,供电充足的 5700g 确实有一定差距。
    gongxuanzhang
        40
    gongxuanzhang  
       61 天前
    个人感受 m 芯片降维打击英特尔
    MrKrabs
        41
    MrKrabs  
       61 天前
    @kenvix 我的解决办法是 please buy caskets for your family
    secondwtq
        42
    secondwtq  
       60 天前
    @yunv2
    #6 这个可以挖一挖:给两边准备同样的虚拟机 Linux 镜像与相同版本的虚拟机软件跑编译,结果是怎样的,依然是 7840H 比 5700G 慢么?
    diagnostics
        43
    diagnostics  
       60 天前
    @kenvix 国家有这样的年轻人,肯定越来越好的,抛开一切事实不谈,就谈情绪~
    kenvix
        44
    kenvix  
       59 天前
    @MrKrabs #37 ハーハーイットシームズザットユーリアリーライクタースピークウィズチャイニーズアンドイングリッシュミクストキャンユースピークチャイニーズライクアーヒューマン 😁?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3144 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 11:24 · PVG 19:24 · LAX 04:24 · JFK 07:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.