В университете на наших курсах по алгоритмам мы учимся точно вычислять сложность различных простых алгоритмов, которые используются на практике, таких как хеш-таблицы или быстрая сортировка.
Но теперь в большом программном проекте, когда мы хотим сделать его быстрее, все, что мы делаем, это просматриваем отдельные части - несколько вложенных циклов, которые можно заменить более быстрой хеш-таблицей, медленный поиск здесь, который можно ускорить более причудливая техника - но мы никогда не вычисляем сложность всего нашего конвейера.
Есть ли способ сделать это? Или люди на практике просто полагаются на «локальное» использование быстрого алгоритма, чтобы сделать все приложение быстрее, вместо того, чтобы рассматривать приложение в целом как глобальное?
(Потому что мне кажется нетривиальным показать, что если вы соберете большое количество алгоритмов, которые, как известно, работают очень быстро сами по себе, вы также получите быстрое приложение в целом.)
Я спрашиваю об этом, потому что передо мной стоит задача ускорить крупный проект, который написал кто-то другой, где множество алгоритмов взаимодействуют и работают с входными данными, поэтому мне неясно, как влияние создания одного алгоритма быстрее на все приложение.
n
увеличивается.