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

215 天前
 yunv2
笔记本处理器是 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 ,并没有这种问题的说明。
有没有知道的大佬,能解释一下?谢谢
3928 次点击
所在节点    程序员
44 条回复
conglovely
215 天前
电源模式->卓越性能 试试
diagnostics
215 天前
还有一个,heap 大小也会影响编译性能,尤其是越大型的项目越明显。可以在环境变量里加 JAVA_OPTS=xxxx 试试看,毕竟 Maven 也是 Java 写的
249239432
215 天前
笔记本的 cpu 就算高性能在负载满的情况下,过热也会降频的,看任务管理器就看出来了
如果不是,那就看看是不是 win11 写数据的时候导致变慢了
https://finance.sina.com.cn/tech/2021-12-10/doc-ikyakumx3179114.shtml
还不是,那就问别人
kenvix
215 天前
@diagnostics #20 哈哈,这就对号入座了?
kenvix
215 天前
@diagnostics #20 果粉是真的一点 Windows 都不会用啊,到现在都分不清性能模式和卓越性能的区别🤣🤣🤣
diagnostics
215 天前
@kenvix #25

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

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

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

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

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

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

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

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

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

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

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


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

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


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

楼主为啥那么在意呢。。

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

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

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

见到这种情况,你不会产生疑问吗?
yeqizhang
215 天前
@wxf666 有没有可能,楼主不是在意这个编译的时间差,而是对 cpu 性能以及跑分存在疑问
fredcc
215 天前
因为没有提到实际机型,以下均为猜测。
op 的 7840hs 是笔记本上的,而 5700G 是台式机,散热能力不同。功耗释放 40-50w 是达不到 7840hs 的完整性能的。以其他笔记本的评测参考,笔记本性能释放 40-45w 时 R23 循环跑分多线程也就在 1w4 到 1w5 之间,比 5700G 相差不大。你可以编译时用工具看下 7840hs 的功耗和温度曲线呢。
geekvcn
215 天前
台式机内存跑在 1:1 模式,笔记本为了省电内存跑在 2:1 甚至 4:1 模式,编译不但是计算密集型还是 IO 密集型任务
msg7086
215 天前
@wxf666 #31 不太清楚楼主说的编译是不是只是说编译。一般项目构建的时候不光要编译,还要执行测试,生成测试覆盖报告,生成 javadoc ,打包二进制等等其他步骤。如果只是做编译,上百个文件也就几秒钟编译完了。
wssy001
214 天前
建议用 `mvn clean compile -T 1C` 这样可以调用全核资源进行编译 我这边用一个微服务项目测试了一下不带`-T 1C`参数和带了的区别 前者耗时 `27.043 s`,后者耗时`12.091 s` 测试`CPU` 为 `M3 Pro`
katfao
214 天前
7840h 作为笔记本 u ,性能比起散热,供电充足的 5700g 确实有一定差距。
gongxuanzhang
214 天前
个人感受 m 芯片降维打击英特尔

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1041598

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX