El término común es que rep movsb
es mucho más lento que rep movsd
(o en 64 bits, rep movsq
) cuando se realizan operaciones idénticas. Sin embargo, he estado probando en algunas máquinas modernas, y los tiempos de ejecución son idénticos (hasta el ruido de medición) en una gran variedad de tamaños de buffer (10 bytes a 2 megas). Hasta ahora, acabo de probar en 2 máquinas (Intel Atom D510 de 32 bits y AMD FX 8120 de 64 bits).¿Información confiable sobre el rendimiento de la instrucción de cadena x86?
¿Hay alguna moderna x 86 máquinas (32 o 64 bits), donde
rep movsb
es más lento querep movsd
(orep movsq
)?Si no, ¿cuál fue la última máquina en la que la diferencia fue significativa y qué tan significativa fue?
que estoy haciendo esta pregunta desde un punto de vista de que quieran evitar la carga-culting un montón de pruebas para romper la memoria hasta en no alineado cabeza/cola y media alineado por el bien de la utilización de rep movsd
o rep movsq
si no hay beneficio real para hacer esto ...
Sus resultados de rendimiento para máquinas modernas son correctos. –
Se acelera por el ancho de banda del bus de memoria, no por la CPU. –
En teoría, eso es probablemente cierto, pero otras formas de copia (por ejemplo, los bucles C) son 2-8 veces más lentas. Entonces, el tiempo de CPU gastado hace una diferencia. –