¿Refactorizar una función C ++ grande en varias clases hará que el programa se ejecute más lentamente?

He refactorizado mucho en mi carrera y el resultado siempre es un poco inesperado. El uso de clases adicionales requerirá algunos recursos de memoria adicionales, pero esto puede ignorarse. Pero el uso de varias clases también podría mejorar el rendimiento porque el código está mejor optimizado y puede limpiar la lógica obsoleta de su código. Además, si esas clases se inicializan antes de la llamada a la función, parte de las cosas que deben hacerse ya se han hecho durante la inicialización.

Una ventaja más podría ser si usa un enfoque de subprocesos múltiples, porque puede ejecutar código en varios subprocesos. Esto hace que el procesador trabaje mucho más, pero la velocidad mejorará bastante. Pero complicaría mucho las cosas, por lo que podría no ser una buena idea, a menos que tenga experiencia con el subprocesamiento múltiple.

Yo estimaría que podría ser como máximo un 10% más lento debido a la sobrecarga adicional, a menos que esté creando demasiadas clases y objetos. Pero debido a que todo esto también está optimizando su función, podría suceder que el rendimiento realmente mejore debido a las optimizaciones. Esto es difícil de predecir sin ver el código original.

No lo creo, es posible que tenga un código mejor después de refactorizar.

Mientras refactoriza puede terminar:

  • eliminando la declaración de variables innecesarias.
  • eliminando referencias adicionales.
  • refinando su algoritmo porque ahora conoce mejor el código.
  • eliminando cualquier antipatrón.

Por lo tanto, el rendimiento de su código aumentará.

Incluso si le preocupa la cantidad de clases que está creando, tendría un impacto insignificante en el rendimiento y puede ignorarse. La refactorización le proporciona un código fácil de entender y fácil de mantener. Un código refactorizado se puede ajustar fácilmente para un mejor rendimiento.

Feliz codificación

Depende de cómo se use la función y cómo se implemente el refactorizador.

Si se llama a la función muchas veces en una aplicación en tiempo real, debe tener mucho cuidado.

Si usa muchas funciones virtuales, la búsqueda de vtable en tiempo de ejecución le costará ciclos de CPU. Sin embargo, si refactoriza la función utilizando construcciones en tiempo de compilación (por ejemplo, macros, plantillas), puede esquivar gran parte del impacto en el rendimiento.

Lo más probable es que ralentice un poco las cosas. Hay algunos gastos generales para organizar su código.

Sin embargo, puede encontrar que es un pequeño precio a pagar por el aumento de velocidad que obtiene cuando perfila su aplicación refactorizada y descubre todas las mejoras potenciales que no podía ver cuando el código era un gran blob.

Puede hacerlo más lento o más rápido. Lo más probable es que no haga una diferencia notable. Si ha determinado que el rendimiento de la función es crítico, entonces necesita medir el rendimiento, para que pueda ver qué efecto está teniendo su cambio. Cualquier otra cosa es solo una conjetura, y es muy fácil adivinar mal.