Pregunta

Estoy tratando de encontrar información sobre glibc y en qué medida utiliza la funcionalidad SSE.

Si está optimizado, ¿puedo usarlo listo para usar?

Digamos que estoy usando una de las distribuciones de Linux más grandes, supongo que su glibc está compilado para ser lo más genérico posible y lo más portátil posible, ¿por lo tanto no está optimizado?

Estoy particularmente interesado en las funciones memcpy y memcmp y cómo obtener estas funciones lo más rápido posible.

¿Fue útil?

Solución

glibc 2.8 no usa SSE para memcpy o memcmp en absoluto (en x86 o x86_64): usa un ensamblaje escrito a mano que evita cualquier cosa que no sea compatible con todas las CPU de la familia. En glibc 2.10, se admitirá un nuevo tipo de reubicación, STT_GNU_IFUNC , que hará mejores optimizaciones basadas en soporte de CPU posible.

Otros consejos

Si compila con la configuración de optimización más alta, memcpy y memcmp pueden ser reemplazados por intrínsecos por el compilador y nunca llamar a glibc. Luego, las opciones del compilador mcpu y march seleccionarán el código más rápido.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top