Tak , są „względnie” mniej ważne w szerokim przemyśle. Edytor tekstu może być „wystarczająco szybki” i może nie wymagać wielu ulepszeń. Duża część wysiłków IT polega na upewnieniu się, że komponent A napisany w Javie współpracuje z komponentem B napisanym za pomocą C komunikuje się poprawnie za pośrednictwem kolejki komunikatów napisanej w Cobolu (lub coś takiego), lub aby wprowadzić produkt na rynek itp
Ponadto architektura się skomplikowała. Kiedy miałeś proste stare proste procesory, w których miałeś 1 instrukcję na cykl i pisałeś w asemblerze, optymalizacje były „łatwe” (wystarczyło policzyć liczbę instrukcji). Obecnie nie masz prostego procesora, ale w pełni potokowy, superskalarny, niedziałający procesor z nazwami rejestrów i wielopoziomową pamięcią podręczną. I nie piszesz w asemblerze, ale w C / Java / etc. gdzie kod jest skompilowany / JITed (zwykle w celu lepszego kodu, niż ty lub ja napisalibyśmy w asemblerze), lub w Pythonie / Ruby / ... gdzie kod jest interpretowany i dzieli Cię kilka poziomów abstrakcji od maszyny. Mikrooptymalizacje są trudne i większość programistów osiąga efekt odwrotny.
Nie , są one tak samo ważne w badaniach, jak i w kategoriach „absolutnych” . Istnieją obszary, w których szybkość jest ważna, ponieważ operują na dużej ilości danych. W tej skali złożoność ma znaczenie, jak pokazuje przykład Pavla.
Istnieją jednak inne przypadki - obniżanie algorytmów jest nadal opcją wybraną, gdy liczy się prędkość (HPC, urządzenia wbudowane itp.). Znajdziesz na wielu uniwersytetach grupy specjalizujące się w kompilatorach i / lub optymalizacji oprogramowania. Na przykład prosta zamiana kolejności w pętli może uzyskać tysiąckrotne przyspieszenie tylko dlatego, że efektywnie wykorzystuje pamięć podręczną - chociaż może to być przykład z granicy, luka między pamięcią procesora rośnie 1000 razy w ciągu ostatnich 30 lat. Również architektura komputerowa jest częścią CS. Dlatego wiele ulepszeń szybkości obliczeń jest w rzeczywistości częścią ogólnego pola CS.
Po stronie przemysłowej - gdy masz klaster HPC, liczy się szybkość, ponieważ pojedynczy program może działać przez kilka dni, miesięcy lub lat. Nie tylko trzeba płacić rachunek za prąd, ale czekanie może również kosztować pieniądze. Możesz rzucić dwa razy więcej sprzętu, ale 700 mln $ nie może być uważane za drobną zmianę dla wszystkich oprócz największych firm - w takich przypadkach programiści są tańszą opcją i jeśli przepisanie programu na nowy język oznacza tylko „małe” przyspieszenie - mogą rozważ to.
Również prędkość może oznaczać lepszy UX. Wiele recenzji systemu operacyjnego na telefony komórkowe mówi, który z nich jest „szybszy” i chociaż można to zrobić za pomocą „sztuczek”, z pewnością jest to obszar badań. Ponadto chcesz szybciej uzyskać dostęp do swoich danych i szybko robić to, czego potrzebujesz. Czasami oznacza to, że możesz zrobić więcej - w grach masz do zrobienia wszystko 0,017s, a im szybciej, tym więcej cukierków możesz włożyć.