À l'université, lors de nos cours d'algorithmes, nous apprenons à calculer avec précision la complexité de divers algorithmes simples utilisés dans la pratique, tels que les tables de hachage ou le tri rapide.
Mais maintenant, dans un grand projet logiciel, lorsque nous voulons le rendre plus rapide, tout ce que nous faisons est de regarder des pièces individuelles - quelques boucles imbriquées là-bas qui peuvent être remplacées par une table de hachage plus rapide, une recherche lente ici qui peut être accélérée par une technique plus sophistiquée, mais nous ne calculons jamais la complexité de l'ensemble de notre pipeline.
Y'a-t'il un quelconque moyen d'y arriver? Ou, dans la pratique, les gens s'appuient-ils uniquement sur "localement" en utilisant un algorithme rapide, pour rendre l'ensemble de l'application plus rapide, au lieu de considérer globalement l'application dans son ensemble?
(Parce qu'il me semble non trivial de montrer que si vous accumulez un grand nombre d'algorithmes connus pour être très rapides par eux-mêmes, vous vous retrouvez également avec une application rapide dans son ensemble.)
Je pose cette question, car je suis chargé d'accélérer un grand projet que quelqu'un d'autre a écrit, où de nombreux algorithmes interagissent et travaillent sur des données d'entrée, il n'est donc pas clair pour moi comment l'impact de la création d'un seul algorithme plus rapidement sur toute l'application.
n
augmentations.