Na universidade, em nossos cursos de algoritmos, aprendemos a calcular com precisão a complexidade de vários algoritmos simples usados na prática, como tabelas de hash ou classificação rápida.
Mas agora em um grande projeto de software, quando queremos torná-lo mais rápido, tudo o que fazemos é olhar para partes individuais - alguns loops aninhados que podem ser substituídos por uma tabela de hash mais rápida, uma pesquisa lenta aqui que pode ser acelerada por uma técnica mais sofisticada - mas nunca computamos a complexidade de todo o nosso pipeline.
Existe alguma maneira de fazer isso? Ou as pessoas na prática estão apenas confiando "localmente" usando um algoritmo rápido, para tornar o aplicativo inteiro mais rápido, em vez de considerar globalmente o aplicativo como um todo?
(Como me parece não trivial mostrar que, se você acumular um grande número de algoritmos conhecidos por serem muito rápidos por conta própria, também terá um aplicativo rápido como um todo).
Estou perguntando isso, porque estou encarregado de acelerar um grande projeto que outra pessoa escreveu, onde muitos algoritmos estão interagindo e trabalhando nos dados de entrada, portanto, não está claro para mim como o impacto de tornar o algoritmo único mais rápido toda a aplicação.
n
aumenta.