Nell'università, durante i nostri corsi sugli algoritmi, apprendiamo come calcolare con precisione la complessità dei vari algoritmi semplici che vengono utilizzati nella pratica, come le tabelle hash o l'ordinamento rapido.
Ma ora in un grande progetto software, quando vogliamo renderlo più veloce, tutto ciò che facciamo è guardare i singoli pezzi - ci sono alcuni loop nidificati che possono essere sostituiti da una tabella hash più veloce, una ricerca lenta qui che può essere accelerato da una tecnica più elaborata, ma non calcoliamo mai la complessità della nostra intera pipeline.
C'è un modo per farlo? Oppure la gente in pratica fa affidamento solo su "localmente" utilizzando un algoritmo veloce, per rendere l'intera applicazione più veloce, invece di considerare globalmente l'applicazione nel suo complesso?
(Perché mi sembra non banale mostrare che se si accumula un gran numero di algoritmi che sono noti per essere molto veloci da soli, si finisce anche con un'applicazione veloce nel suo complesso.)
Te lo chiedo, perché ho il compito di velocizzare un grande progetto che qualcun altro ha scritto, dove molti algoritmi interagiscono e lavorano sui dati di input, quindi non mi è chiaro come l'impatto del fare su singolo algoritmo più veloce su tutta l'applicazione.