You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何未优化的计数器递增循环在Zen 5上比Raptor Lake快4倍?

性能差异的可能原因分析

针对你遇到的Intel i9-13900K与AMD Ryzen 9 9950X在无优化编译下的性能差距,结合两款处理器特性与测试代码的特点,可能的原因如下:

1. CPU微架构的执行效率差异

  • 整数/内存执行单元吞吐量:Zen 5架构的整数执行单元与Load/Store单元数量更多,在持续写单个全局变量的场景下,内存操作的并行处理效率更高。Raptor Lake的大小核架构中,即使是大核,其内存访问相关的执行单元吞吐量也不如Zen 5的全大核设计,导致单变量递增这类内存绑定操作的执行速度更慢。
  • 分支预测与流水线效率:5e10次的循环分支判断(i < target)会持续考验CPU的分支预测能力。Zen 5的分支预测机制在这类高频简单分支场景下的延迟或命中率更优,减少了流水线停顿的概率。

2. 缓存与内存控制器的行为差异

  • 缓存一致性开销:current是全局静态变量,每次递增都会触发缓存行的RFO(Read For Ownership)操作。Zen 5的缓存一致性协议实现更高效,在单变量持续写的场景下,缓存行的维护开销更低;而Raptor Lake的缓存架构(单核心L2 2MB、总L3 36MB)在这类单一缓存行的频繁写操作中,没有Zen 5(总L3 64MB)的缓存效率优势。
  • 内存控制器效率:即使使用同款DDR5内存,两款CPU的内存控制器设计不同。Zen 5的内存控制器在持续小流量写操作下的带宽利用率和延迟表现更优,而Raptor Lake的内存控制器可能在这种场景下的性能上限更低。

3. Visual Studio编译的机器码差异

禁用优化后,VS仍会根据目标CPU的架构生成针对性的机器码:

  • 针对AMD Zen 5,VS可能生成更适配其流水线的指令序列,比如更合理的指令调度,减少流水线气泡;而针对Raptor Lake生成的指令可能在内存操作的指令选择上效率更低。
  • 可以通过VS的反汇编窗口对比两款机器生成的work()函数机器码,查看是否存在指令数量、类型或调度的差异。

4. 核心调度与电源设置问题

  • 大小核调度:13900K是大小核混合架构,如果测试程序被Windows调度到性能较弱的小核上运行,即使标称频率相近,小核的单线程性能(尤其是内存相关操作)会远低于大核,直接导致耗时翻倍。而9950X是全大核架构,不存在这个问题。
  • 电源计划影响:如果你的机器使用了「平衡」电源计划,长时间运行测试时CPU可能无法持续维持最高频率,出现降频;而朋友的机器设置了「高性能」计划,CPU全程维持满频运行,性能差距被放大。

5. 系统环境干扰

你的机器后台可能有大量占用CPU或内存的进程(如杀毒软件、同步工具等),抢占了测试程序的运行资源;而朋友的机器后台更干净,测试程序能独占核心资源。

验证建议

  • 打开任务管理器,查看测试程序的核心绑定情况,手动将程序绑定到13900K的大核(编号0-7)后重新测试。
  • 将电源计划切换为「高性能」,关闭所有后台无关进程后再运行测试。
  • 在VS中开启反汇编,对比两款机器生成的work()函数机器码,确认是否存在指令层面的差异。

内容的提问来源于stack exchange,提问作者ancientGorilla

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 21:35:07