Será dependiente del contexto.
"Reparar un error de rendimiento de tiempo de ejecución cuadrático" es típicamente lo que veo. Sin embargo, si eso merece arreglarse (un cambio de código) depende del contexto.
Tenga en cuenta que las bases de datos proporcionan muchas herramientas para mejorar la complejidad del tiempo. Por ejemplo, para obtener los mejores resultados de N de una base de datos, solo dígalo. Al convertir kludge ineficiente en llamada optimizada incorporada, la explicación parece superflua.
La razón por la que considero un algoritmo con tiempo de ejecución cuadrático para merecer una revisión de código (discusión) no es tanto porque es lento (lento es relativo; cuadrático es rápido en comparación con exponencial), sino porque la intuición humana (como sus clientes, o compañeros programadores) se sienten incómodos por naturaleza con una funcionalidad de software que se desvía demasiado del tiempo de ejecución lineal, debido a la mezcla de expectativas de la vida cotidiana.
Muchas de las quejas de los clientes sobre el rendimiento del software se dividen en estas dos categorías:
Todo el sistema (software y hardware) se especificó en función del uso estimado. La semana pasada, todo funciona bien, una cierta funcionalidad tomó menos de 5 segundos. Esta semana, después de instalar una actualización, la misma funcionalidad lleva más de 1 minuto.
- Esta es una comparación con un rendimiento previamente comparado. El cliente mantiene el rendimiento futuro en un criterio absoluto de una escala de tiempo humana (de segundos a minutos).
Envié 100 trabajos al sistema. ¿Por qué tarda 400 veces más tiempo en procesar, en comparación con el tiempo que lleva un solo trabajo?
- El cliente espera que el tiempo de procesamiento sea lineal. De hecho, el cliente no puede entender o aceptar que existen tareas que son más lentas que lineales.
Por esta razón, un cliente considerará que el tiempo de ejecución es un error si ambas son verdaderas:
- Más lento que lineal
- Notable (es decir, cae dentro del rango de tiempo humano (más de segundos o minutos) dados los tamaños de tarea típicos)
Argumentos legítimos que explican que un algoritmo de tiempo de ejecución cuadrático no plantea un problema (es decir, no merece un cambio de código):
- El tamaño de la tarea que normalmente maneja esta función de tiempo de ejecución cuadrático está algo limitado
- Dado el rango de tamaño típico, el tiempo de ejecución real (absoluto) sigue siendo lo suficientemente pequeño como para descartarlo
- Si un usuario realmente intenta enviar una tarea que sea lo suficientemente grande como para que se note, el usuario recibirá un mensaje de advertencia sobre el largo tiempo de ejecución
- Los usuarios del sistema son todos expertos, por lo tanto, saben lo que están haciendo. Por ejemplo, los usuarios de una API deberían haber leído la letra pequeña en la documentación de la API.
Muchos algoritmos útiles para el desarrollo de aplicaciones típicas son, de hecho, más lentos que los lineales (principalmente O (N log N), como en la ordenación), por lo tanto, el software a gran escala tratará de solucionarlo, solo ordenando la parte relevante de la aplicación. datos, o use técnicas de filtrado de histograma (estadística) que logren un efecto similar.
Esto se aplica a los clientes de software, pero si considera que los usuarios de una biblioteca de software o función API también son "clientes", entonces la respuesta aún se aplicaría.