常見的問題是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花費的時間有所不同。 –