常见的问题是rep movsb
在执行相同操作时比rep movsd
(或64位,rep movsq
)慢得多。但是,我一直在测试一些现代化的机器,并且在大范围的缓冲区大小(10字节到2兆字节)内运行时间相同(达到测量噪声)。到目前为止,我刚刚在2台机器上进行了测试(32位Intel Atom D510和64位AMD FX 8120)。有关x86字符串指令性能的可靠信息?
是否有任何现代的x86(32位或64位)的机器,其中
rep movsb
慢于rep movsd
(或rep movsq
)?如果不是,那么最后一台机器的差异是否显着,它有多重要?
我要求从希望避免货物culting一系列测试,打破存储成未对齐的头/尾的角度来看这个问题,并对准中间使用rep movsd
或rep movsq
的缘故,如果没有实际利益这样做......
您的现代化机器的性能结果是正确的。 –
它受内存总线带宽的限制,而不是CPU。 –
理论上这可能是正确的,但其他复制方式(例如C循环)速度要慢2-8倍。所以CPU花费的时间有所不同。 –