常见的方式是在执行相同操作时rep movsb
比rep movsd
(或在 64 位上)慢得多。rep movsq
但是,我已经在几台现代机器上进行了测试,并且在各种缓冲区大小(10 字节到 2 兆)中运行时间都是相同的(直到测量噪声)。到目前为止,我刚刚在 2 台机器(32 位 Intel Atom D510 和 64 位 AMD FX 8120)上进行了测试。
rep movsb
有没有比rep movsd
(或)慢的现代 x86(32 位或 64 位)机器rep movsq
?如果不是,那么最后一台差异显着的机器是什么,它有多显着?
我问这个问题是为了避免为了使用而进行大量测试以将内存分解为未对齐的头/尾和对齐的中间,rep movsd
或者rep movsq
这样做没有实际好处......