"Clean code" y rendimiento: las reglas que arruinan tu CPU

Fuentes: "Clean" Code, Horrible Performance

Este artículo, fragmento de la serie Performance-Aware Programming de Casey Muratori, desmonta con mediciones reales algunas de las reglas más repetidas del movimiento "clean code": preferir polimorfismo frente a if/else o switch, mantener funciones pequeñas, hacer una sola cosa y no repetir código (DRY). Para evaluar su coste en tiempo de ejecución, el autor toma ejemplos canónicos de la literatura "clean" —una jerarquía de figuras (cuadrado, rectángulo, triángulo, círculo) con un método virtual Area() y un bucle que suma sus áreas— y los compara con una versión que sustituye la jerarquía por un struct con un enum y un switch. La implementación "clean" ronda los 35 ciclos por figura tanto en frío como en caliente, y ni siquiera el desenrollado manual del bucle mejora la cifra. La conclusión del autor es que el polimorfismo vía vtable, los punteros indirectos y la indirección que obliga a recorrer un array de punteros impiden al procesador mantener los datos y el flujo de control eficientes, lastrando el rendimiento aunque el código sea legible y elegante. La pieza invita a los programadores a medir antes de aplicar dogmas y a entender cómo decisiones aparentemente inocuas sobre la estructura del código se traducen en ciclos de CPU perdidos.