常见的widom是 rep movsb
在执行相同操作时比 rep movsd
(或在64位, rep movsq
上)慢得多 . 但是,我已经在一些现代机器上进行了测试,并且在大量缓冲区大小(10字节到2兆)之间运行时间相同(达到测量噪声) . 到目前为止,我刚刚在2台机器(32位Intel Atom D510和64位AMD FX 8120)上进行了测试 .
-
是否有任何现代x86(32位或64位)机器
rep movsb
比rep movsd
(或rep movsq
)慢? -
如果没有,那么差异显着的最后一台机器是什么,它有多重要?
我想从这个问题的角度来看这个问题是为了避免货物结果,为了使用 rep movsd
或 rep movsq
,为了使用 rep movsd
或 rep movsq
,如果这样做没有实际的好处,可以将一堆测试分解为未对齐的头/尾和对齐的中间 . .
1 回答
这里有很多基准:instlatx64.atw.hu
例如(英特尔酷睿2双核E6700):
这表明存在差异,但它很小 .
SandyBridge的这个有点奇怪:
似乎在一些Atoms上有很大的不同(似乎已经与D5xx一起消失了,所以你只是错过了它):
我没有发现任何可以被认为是新的东西的巨大差异 .