En general, la solución más importante para un problema será la que realmente exista y sea válida para los casos tal como existen para su problema. En otras palabras, evite la optimización prematura hasta que sepa que tiene un código ineficiente o un código eficiente que debe ser más rápido.
Además, no olvide que la mejor solución para su aplicación puede no ser la solución de caso general. Caso y punto, hace un par de años, un profesor le dio a nuestra clase un problema en el que íbamos a imprimir los primeros 10 números de un tipo dado (lo siento, mi memoria me falla en cuanto al tipo, pero fue uno de los números más inusuales clases) y nos hicieron una prueba para verificar que el número fuera del tipo dado. Este fue el alcance del problema que se nos dio y se nos dijo que debía entregarse al día siguiente y que la solución más eficiente recibiría el crédito completo. En la siguiente conferencia, el profesor resumió los resultados:
- Algunos estudiantes usaron un bucle simple y la fórmula provista para verificar que los números fueran correctos y los mostraran, despacio pero hicieron el trabajo, O (n ^ 3).
- Otros estudiantes hicieron su investigación y encontraron una fórmula que hizo un mejor trabajo de verificación para asegurarse de que un número dado fuera válido, estos programas se ejecutaron mucho más rápido, O (n ^ 2).
- Un estudiante usó la fórmula lenta para generar los valores y luego los copió en una matriz constante en su código y mostró el contenido de eso, O (n).
La solución final fue considerada la más eficiente por el profesor. Resulta que el problema era en realidad un ejercicio para comprender completamente el problema y no solo para salir y encontrar la solución más eficiente.
El punto de lo anterior es que cuando se trata de encontrar una solución eficiente a un problema, generalmente es mejor pasar el tiempo para asegurarse de que realmente comprende cuál es el problema antes de comenzar a escribir código o intentar optimizar el código. Si puede almacenar un conjunto de valores de referencia en una matriz constante, es mejor hacerlo desde el punto de vista del rendimiento que intentar escribir un algoritmo sofisticado.
Del mismo modo, no olvide que para la mayoría de las aplicaciones, las únicas personas que tienden a ver código ineficiente (¡cuando no es innecesariamente ineficiente!) Son los propios desarrolladores. Si escribe un código limpio que solo hace exactamente lo que debe hacer, lo más probable es que la mayoría de las veces los usuarios no noten problemas de rendimiento al trabajar con su programa y cuando simplemente optimizan las partes que mencionan tú.