我最近改变了我的东芝 Satellite L70-B-12H 配备 i7-4700 HQ 处理器,华硕 GL553VD配备 i7-7700 HQ 处理器。我使用用 C/C++ 编写的程序执行一些数值分析,该程序通过 Mex 与 GNU Octave 交互;它使用 Open MP 并行线程。我很失望地发现,我的新电脑配备了更好的处理器,但在执行相同任务时,它比旧电脑(配备较差的处理器)慢 2 倍。
在较新的计算机(ASUS)上进行监控表明,所有 8 个处理器均以 3.40 GHz 的速度工作,没有 CPU 限制(在大多数试验中)。
哪些因素可以解释所谓更好的处理器却出现如此糟糕的性能?
我能想到的唯一显著差异是旧电脑(东芝)有 16 GB 的 RAM,而新电脑(华硕)只有 8 GB。这足以解释速度上如此巨大的差异吗?手头的任务最多需要 2.4 GB 的内存,因此 8 GB 的 RAM 不可能饱和(我确认没有,并且没有使用交换内存)。
答案1
或许并非如此实际的你的程序已经占用了足够的内存,但如果内存带宽正在饱和。
如果您的新系统只有 1 条 RAM,而旧系统有 2 条 RAM,那么您的“数值任务”受带宽限制的可能性大于受 CPU 限制。
两款CPU的内存带宽:
i7-4700HQ:25.6 GB/秒
i7-7700HQ:34.1 GB/s(双通道)
i7-7700HQ:17 GB/s(单通道)
这些数字适用于“双通道”,即 2 个内存条。如果您只有 1 个内存条,则系统将以 i7-7700 的 17.05GB/s 速度在“单通道”模式下运行。
如果你真的希望系统以最佳性能运行,并且比旧系统更好,那么内存条的数量可能是罪魁祸首,因为 7700应该在其他方面都更快。