本页面记录过去一段时间内个人使用相近环境与参数测试的不同处理器的SPEC CPU 2017 rate-1 整数性能,由本人2022年发表的知乎文章精简而来并同步更新。
测试环境
- 编译器统一为 GCC 12
- 经过对比确认,GCC 12.1与12.2几乎不存在性能差异,因此仅在图中注明版本而不重测。
- 编译参数统一为 -Ofast -flto,-march/-mcpu等参数尽可能贴近native。
- 操作系统尽可能统一为原生启动的Debian 12 (bookworm) 或运行于WSL2
- Windows 11 22H2后WSL2的性能影响较大(观察到了5%左右的性能差异),今后会尽量使用原生Linux的成绩
- Apple Silicon设备使用macOS测试大核,使用Debian Linux ARM64 (Asahi Linux内核)测试小核。macOS下虽然可以使用taskpolicy将测试强制运行在小核上,但疑似因为节能机制导致性能无法正常发挥,最终只有Linux下一半左右的性能。
-
关于macOS的性能:由于运行环境差异(尤其是macOS libc/malloc),包括x86_64/ARM64在内的各类处理器在macOS下运行523.xalancbmk的性能相比默认配置的Linux/glibc有显著优势,其它子项则是互有胜负。最终macOS总分会领先Linux大约3%-4%左右,例如下图中由 @记三水 提供的macOS和Linux下测试M2 Pro的数据。
- 关于龙芯(Loongson)/龙架构(LoongArch)与编译器:LoongArch目前的社区编译器支持依然处于初步阶段,不同版本的编译器之间会有较为明显的性能差异。
最大的性能差异在于向量化,GCC 12.x与13.x没有支持LoongArch的向量化(其它架构比如ARM64/AMD64的向量化则早有支持)。因此可以看到,在对向量依赖较重的525.x264子项中,GCC 14相比12提升了一倍左右。而GCC 14.x的这个优势又被其它子项的性能显著回退(例如548.exchange2)抵消了一部分,因此这里给出不同编译器的详细成绩提供参考。为了大多数其它子项的性能可比性,总排行中依然以GCC 12.x为准。
- CPU主频为全默认,功耗和散热性能低到可能影响单线程性能的情况下会标注。
- 内存尽可能使用平台支持的最高JEDEC参数,但可能会加入部分平台手调内存的测试结果,会单独注明。
参考配置
在 Debian 12 环境下运行可以参考以下配置: default
使用前请注意修改 132-163 行的 taskset 核心affinity设置,以及 344 行的 -march 参数。
测试成绩
总分排行
子项成绩
备注
- (10/21/2022 更新) 由于 macOS 环境问题,502.gcc 子项在无法在使用 -flto 选项时通过测试,因此M1 Max等Apple处理器的测试仅对其它子项启用 -flto,最终成绩可能略低于其真实性能水平。之前的成绩对M1 Max所有的子项都未启用 -flto,因此导致M1 Max的相对位置偏低。感谢 @蒋三水 指出之前测试中存在的问题,现已修正测试成绩以及相应的点评内容。
- (11/13/2022 更新) 增加 i9-13900K 的 P/E-core 性能,其中 P-core 测试使用taskset将进程固定于体质最好的核心上并且全程运行于 5.8 GHz, E-core 全程运行于 4.3 GHz (即两者均为默认最高boost clock)。
- (12/4/2022 更新) 增加 7950X 使用 JEDEC DDR5-5600B 内存和更强散热的表现。尽管使用的是JEDEC内存,原则上高于官方支持的5200频率依然属于内存OC。不过这样能与Raptor Lake更直接地对比相同内存配置下的表现,因此单独添加这项成绩。
- (12/4/2022 更新) 优化子项图表可读性。
- (12/31/2022 更新) 精简并移除部分冗余的Rembrandt平台成绩,更新6900HS原生Linux环境下测试的成绩。
- (1/19/2023 更新) 添加 4800U + DDR4-3200 并移除 4700U + DDR4-2666 的成绩,以更好地代表 Renoir 平台的出厂最佳表现。
- (2/11/2023 更新) 移除低功耗 7950X 测试,添加默频 7950X 成绩,更新 7950X DDR5-5600B 成绩的描述(Mem OC)
- (2/15/2023 更新) 加入 M2 Pro 的测试成绩,感谢 @蒋三水 提供。
- (2/24/2023 更新) 加入 M2 的测试成绩。该测试于被动散热的M2 MacBook Air进行,因此可能会对单核性能略微产生影响。感谢 @Luv Letter 提供。
- (3/5/2023 更新) 加入 7950X3D 的测试成绩。
- (4/3/2023 更新) 加入 i3-N305 的测试成绩。调整总分的格式,与SPEC报告统一为3位有效数字。
- (7/2/2023 更新) 加入 7840HS/7840U 的测试成绩。
- (8/18/2023 更新) 加入 13700H P/E 核心的测试成绩。更新BIOS后重新测试13900K/7950X3D。移除冗余的7950X成绩。
- (8/27/2023 更新) 更新 Ryzen 5 3600 原生频率测试,并移除内存OC的 3950X 测试。
- (9/3/2023 更新) 加入 Snapdragon 8 gen 2 的X3/A715核心测试(使用Samsung Galaxy Z Fold5在8℃环境下进行),加入 Phoenix2 (7540U/Z1) 的 Zen4 classic/dense 两种核心测试。
- (9/11/2023 更新) 加入 Snapdragon 8 gen 2 (A510), Snapdragon 8 gen 1 (X1/A510), Snapdragon 865+ (A77), Rockchip RK3399 (A72/A53) 的测试成绩,子项成绩表格加入频率、每GHz性能,并详细描述ARM处理器的核心类型、频率与缓存信息。
- (12/1/2023 更新) 加入 M3 Pro P-core 的测试成绩;(12/18/2023 更新) 加入 M3 Pro E-core 的测试成绩,感谢 @记三水 提供。
- (12/31/2023 更新) 加入 155H (Meteor Lake) 四种核心的测试成绩。
- (2/22/2024 更新) 加入 7735U (Rembrandt),修正PHX2处理器名 (7540U → 7545U)
- (3/17/2024 更新) 加入 Exynos 2400 四种核心的测试成绩。
- (6/24/2024 更新) 换用Apple Silicon Linux测试成绩以更好地说明macOS与Linux操作系统性能差异,删除已修复的WSL2 WoA bug描述。
- (7/24/2024 更新) 加入飞腾D3000 (FTC862 @ 2.5 GHz) 与新一代华为鲲鹏服务器 (TSV120 @ 2.9 GHz) 的测试成绩。
- (7/25/2024 更新) 加入龙芯3A5000/3A6000的性能,并加入编译器相关说明。由不愿透露姓名的群友提供。
- (8/5/2024 更新) 修正鲲鹏TSV120的成绩。由于此前测试的内核版本过旧,与近期收集测试成绩的环境有较大差距,且编译器-march参数未专门针对调优,因此可能造成了一些额外的误差。感谢 @Matterhorn 提交较新内核的测试结果,完整报告参考此处。
- (8/5/2024 更新2) 加入Ryzen AI 9 HX 370测试成绩。
- (9/17/2024 更新) 加入9950X的测试成绩;加入M1 Max Linux测试成绩;使用更严格的测试标准刷新以下处理器的成绩以获得更好的准确性:6900HS, 7735U, 7840U, 7950X3D, 13700H, Exynos 2400, HX 370, i7-9700, i3-N305, Snapdragon 8 gen 2;在图片中加入一些文本提示。
- (9/24/2024 更新) 加入258V的测试成绩。
- (10/26/2024 更新) 加入265K的测试成绩。
- (10/30/2024 更新) 加入i5-L16G7 E-core (Tremont)、Snapdragon 8E (Oryon-L/M)测试成绩。其中由于Oryon-L出现明显的降频问题,采用三轮测试中的第一轮分数。
- (11/7/2024 更新) 使用新的Snapdragon 8E测试成绩。其中Oryon-L依然不是全程维持4.32 GHz的最高频率,通过linux perf频率监测可以得知各个子项的平均频率在3.8-4.3 GHz之间。将所有子项的全程平均频率再进行几何平均计算可以得到4GHz的结果,因此频率一栏使用4GHz这个数值。
- (11/9/2024 更新) 加入M4 Pro macOS的成绩,感谢 @计三水 提供。加入9800X3D 默频与OC 5.7 GHz的成绩。
- (11/12/2024 更新) 更新M2 Pro macOS 15.1成绩,更新确认跑满4.5GHz频率的M4 Pro macOS成绩。
Apple的单核成绩真好。大cache跑编译有用也真是没什么用。感谢评测
请问一下博主 macOS 怎么运行 SPEC cpu测试程序呢 还是说也得装虚拟机跑 linux 才能用
7840HS DDR5的测试成绩为什么从排行榜中移除了?
7840HS当时的测试进行的非常粗糙,而且频率也很不稳定,比我预期的误差要大,参考意义不大。
请问Apple m系列芯片为什么在macOS上的跑分为什么高于Linux?二者当中哪个更接近真实性能呢?
macOS的malloc相比于Linux glibc对单线程应用更加友好。在缓存容量一定时,这个会提升部分缓存/内存敏感子项的性能,目前看来似乎缓存越小越明显。这一改变不局限于Apple Silicon,Intel乃至并未受到macOS官方支持的AMD运行macOS都能观测到类似的性能提升。
如果是为了评估芯片本身的性能,我的建议是全部使用Linux进行测试。但是如果要针对用户实际使用情况进行评估,那么Apple Silicon使用macOS,x86处理器选择更符合主流的Windows更加合理,这样差距会更大。不过这不是我收集本文这些数据的主要目的,之前我在知乎单独发过Linux和Windows的性能对比。总的来说目前x86芯片在主流用户手里运行常规portable C应用性能是不如macOS乃至Android的。
m2的测试成绩为什么移除了?
收到关于那个测试并没有跑满频率因此不太能代表M2的真实性能的反馈。考虑到M2与M2 Pro在macOS下的实际性能几乎可以认为相同,于是我就作为冗余项目移除了,改为增加M1 Max / M2 Pro的Linux成绩增加图表的信息量。此前一直都有在定期移除质量较低且存在重复的测试结果。
请问7840u和7840h除了使用的内存不一样之外有什么区别?除了内存之外是什么导致了他们的性能差别,明明主频是一样的?
主要就是内存方面的区别。虽然我没有测试过LPDDR的7840H,但是从过去测试6800H+LPDDR的组合对比6800U+LPDDR和6800H+DDR数据很容易得出这个结论。