1 puntos por GN⁺ 2023-07-07 | 1 comentarios | Compartir por WhatsApp
  • Un artículo que explora oportunidades de optimización en bucles de código C generados por Clang
  • El bucle incrementa o decrementa números según los caracteres de una cadena.
  • El autor reorganiza el bucle para optimizarlo para los caracteres 'p' y 's' en lugar del terminador nulo.
  • El autor elimina las ramas condicionales usando aritmética y movimientos condicionales.
  • El código optimizado logra una mejora significativa de velocidad de 6.73 veces en comparación con el código original.
  • El autor también prueba otras técnicas de optimización, pero descubre que hacen el código más lento.
  • La configuración de benchmarking incluye un CPU AMD Ryzen 5 5625U y las versiones más recientes de Clang y GCC.
  • La conclusión es que el trabajo manual y la optimización en ensamblador pueden generar mejoras importantes de rendimiento en casos específicos.

1 comentarios

 
GN⁺ 2023-07-07
Opiniones de Hacker News
  • El código original se puede optimizar usando sentencias if en lugar de una sentencia switch.
  • Otra versión optimizada del código usa instrucciones sin bifurcación sete/cmov y puede alcanzar la misma velocidad que el código ensamblador optimizado.
  • Una versión vectorizada del código podría ser aún más rápida si usa instrucciones AVX-512 cuando sea posible.
  • Otros procesadores pueden tener características de rendimiento distintas según las bifurcaciones.
  • El lenguaje C fue diseñado originalmente para facilitar la traducción de código a nivel de sistema entre distintas plataformas, y sacrificó algunas funciones para lograrlo.