Na uniwersytecie, na naszych kursach z algorytmów, uczymy się, jak precyzyjnie obliczać złożoność różnych prostych algorytmów wykorzystywanych w praktyce, takich jak tabele skrótów lub szybkie sortowanie.
Ale teraz w dużym projekcie oprogramowania, gdy chcemy przyspieszyć, wystarczy spojrzeć na poszczególne elementy - kilka zagnieżdżonych pętli, które można zastąpić szybszą tabelą skrótów, powolne wyszukiwanie tutaj, które można przyspieszyć bardziej fantazyjna technika, ale nigdy nie obliczamy złożoności całego naszego rurociągu.
Czy istnieje jakiś sposób, aby to zrobić? A może ludzie w praktyce polegają tylko na „lokalnym” użyciu szybkiego algorytmu, aby przyspieszyć działanie całej aplikacji, zamiast globalnego rozpatrywania aplikacji jako całości?
(Ponieważ wydaje mi się, że nietrudne jest wykazanie, że jeśli zgromadzisz dużą liczbę algorytmów, o których wiadomo, że są bardzo szybkie same w sobie, kończy się to szybką aplikacją jako całością).
Pytam o to, ponieważ moim zadaniem jest przyspieszenie dużego projektu napisanego przez kogoś innego, w którym wiele algorytmów oddziałuje i pracuje na danych wejściowych, więc nie jest dla mnie jasne, w jaki sposób szybsze oddziaływanie na pojedynczy algorytm cała aplikacja.
n
wzrostem.