Так , вони є "відносно" менш важливими для широкої промисловості. Текстовий редактор може бути "досить швидким", і він може не потребувати великих вдосконалень. Значна частина ІТ-зусиль спрямована на те, щоб переконатися, що компонент A, написаний на Java, працює з компонентом B, написаним на C, правильно спілкується через чергу черги повідомлень, написане на Cobol (чи щось таке), або для виходу товару на ринок тощо.
Крім того, архітектура ускладнилася. Коли у вас були прості старі прості процесори, де ви мали 1 інструкцію за цикл, і ви писали в збірці, оптимізації були «легкими» (вам просто потрібно було порахувати кількість інструкцій). На даний момент у вас немає простого процесора, але повністю конвеєрного, суперскалярного, нестандартного процесора з перейменуванням реєстру та кешами декількох рівнів. І ви пишете не в зборах, а в C / Java / тощо. де код складений / JITed (як правило, для кращого коду, ніж ви або я написав би у збірці), або в Python / Ruby / ..., де інтерпретується код, і ви розділені кількома рівнями абстракції від машини. Мікрооптималізації важкі, і більшість програмістів досягли б протилежного ефекту.
Ні , вони так само важливі як в дослідженнях, так і в "абсолютних" умовах. Є області, де важлива швидкість, оскільки вони працюють на великій кількості даних. У цьому масштабі складності мають значення, як показано на прикладі Павла.
Однак є й інші випадки, коли «швидкість» від алгоритмів все ще є вибором, коли важлива швидкість (HPC, вбудовані пристрої тощо). Ви знайдете в багатьох університетських групах, що спеціалізуються на компіляторах та / або оптимізації програмного забезпечення. Наприклад, простий порядок впорядкування циклу може отримати прискорення в тисячу разів лише тому, що він ефективно використовує кеш - хоча це може бути прикордонним прикладом розрив пам’яті процесора зростає в 1000 разів за останні 30 років. Також архітектура комп’ютерів є частиною CS. Тому багато поліпшень швидкості обчислень насправді є частиною загального поля CS.
Що стосується промисловості - коли у вас швидкість кластера HPC має значення, тому що одна програма може працювати протягом днів, місяців або років. Потрібно оплатити не тільки рахунок за електроенергію, але й очікування також може коштувати грошей. Ви можете кинути вдвічі більше апаратного забезпечення, але 700 мільйонів доларів навряд чи можна вважати зміною кишені для всіх, крім найбільших компаній - у таких випадках програмісти є дешевшим варіантом, і якщо переписання програми на нову мову означає лише “малу” швидкість - вони можуть розглянути це.
Також швидкість може означати кращий UX. У багатьох оглядах ОС мобільних телефонів зазначено, що саме є «оснасткою», і хоча це можна зробити «трюками», це, безумовно, область вивчення. Також ви хочете отримати швидший доступ до своїх даних і швидко зробити все, що вам потрібно. Іноді це означає, що ти можеш зробити більше - в іграх ти маєш 0,017, щоб зробити все, і чим швидше ти, тим більше цукерок можна покласти.