Да , они «относительно» менее важны в широкой отрасли. Текстовый редактор может быть «достаточно быстрым» и не требует особых улучшений. Большая часть ИТ-усилий направлена на то, чтобы компонент A, написанный на Java, работал с компонентом B, написанным на C, правильно связывался через очередь сообщений, написанную на Cobol (или чем-то еще), или чтобы доставить продукт на рынок и т. Д.
Кроме того, архитектура усложнилась. Когда у вас были простые старые простые процессоры, в которых у вас было 1 инструкция на цикл, и вы писали в сборке, оптимизация была «легкой» (вам просто нужно было подсчитать количество инструкций). В настоящее время у вас нет простого процессора, но есть полностью конвейерный, суперскалярный, неупорядоченный процессор с переименованием регистров и многоуровневым кешем. И вы пишете не на ассемблере, а на C / Java / и т.д. где код скомпилирован / JITed (обычно для лучшего кода, чем вы или я бы написали на ассемблере), или в Python / Ruby / ..., где код интерпретируется, и вы отделены несколькими уровнями абстракции от машины. Микрооптимализация трудна, и большинство программистов достигли бы противоположного эффекта.
Нет , они как никогда важны в исследованиях и в «абсолютных» терминах. Есть области, где важна скорость, поскольку они работают с большим объемом данных. В этом масштабе сложности имеют значение, как показано на примере Павла.
Однако есть и другие случаи - отказ от алгоритмов все еще остается выбором, если скорость имеет значение (HPC, встроенные устройства и т. Д.). Вы найдете во многих университетах группы, специализирующиеся на компиляторах и / или оптимизации программного обеспечения. Например, простая замена порядка циклов может ускорить процесс в тысячу раз только потому, что он эффективно использует кэш - хотя это может быть пограничным примером, за последние 30 лет разрыв в памяти ЦП увеличился в 1000 раз. Также компьютерная архитектура является частью CS. Поэтому многие улучшения в скорости вычислений фактически являются частью общего поля CS.
С промышленной стороны - когда у вас кластер HPC, скорость имеет значение, потому что одна программа может работать в течение нескольких дней, месяцев или лет. Вы не только должны оплатить счет за электроэнергию, но и ожидание может стоить денег. Вы можете выбросить вдвое больше оборудования, но 700 миллионов долларов вряд ли можно считать карманной заменой для всех, кроме крупнейших компаний - в таких случаях программисты являются более дешевым вариантом, и если переписывание программы на новый язык означает просто «небольшое» ускорение - они могут учти это.
Также скорость может означать лучший UX. Во многих обзорах ОС мобильных телефонов указывается, какой из них является «более быстрым», и хотя это можно сделать с помощью «хитростей», это, безусловно, область исследования. Также вы хотите получить доступ к вашим данным быстрее и быстрее делать то, что вам нужно. Иногда это означает, что вы можете сделать больше - в играх у вас есть 0,017, чтобы делать все, и чем быстрее вы набираете, тем больше конфет вы можете положить.