En la universidad, en nuestros cursos de algoritmos, aprendemos cómo calcular con precisión la complejidad de varios algoritmos simples que se utilizan en la práctica, como las tablas hash o la clasificación rápida.
Pero ahora en un gran proyecto de software, cuando queremos hacerlo más rápido, todo lo que hacemos es mirar piezas individuales: unos pocos bucles anidados que pueden reemplazarse por una tabla hash más rápida, una búsqueda lenta aquí que puede acelerarse mediante una técnica más sofisticada, pero nunca calculamos la complejidad de toda nuestra tubería.
¿Hay alguna manera de hacerlo? ¿O las personas en la práctica solo confían en "localmente" el uso de un algoritmo rápido, para hacer que toda la aplicación sea más rápida, en lugar de considerar globalmente la aplicación como un todo?
(Debido a que me parece no trivial mostrar que si acumula una gran cantidad de algoritmos que se sabe que son muy rápidos por sí mismos, también terminará con una aplicación rápida en su conjunto).
Estoy preguntando esto, porque tengo la tarea de acelerar un proyecto grande que alguien más ha escrito, donde muchos algoritmos interactúan y trabajan en datos de entrada, por lo que no tengo claro cómo el impacto de hacer un algoritmo único más rápido en Toda la aplicación.
n
aumenta.