Sí , son "relativamente" menos importantes en la amplia industria. El editor de texto puede ser "lo suficientemente rápido" y puede que no necesite muchas mejoras. Gran parte del esfuerzo de TI se dirige a garantizar que el componente A escrito en Java funcione con el componente B escrito con C se comunica correctamente a través de la cola de mensajes escrita en Cobol (o algo así), o para llevar el producto al mercado, etc.
Además, la arquitectura se complicó. Cuando tenía procesadores simples y viejos, donde tenía 1 instrucción por ciclo y escribía en conjunto, las optimizaciones eran 'fáciles' (solo necesitaba contar el número de instrucciones). Actualmente no tiene un procesador simple, sino un procesador fuera de orden, superescalar y totalmente interconectado con cambio de nombre de registro y caché de nivel múltiple. Y no escribes en ensamblado sino en C / Java / etc. donde el código está compilado / JITED (generalmente para un mejor código del que tú o yo escribiríamos en ensamblador), o en Python / Ruby / ... donde el código se interpreta y estás separado por varios niveles de abstracción de la máquina. Las microoptimalizaciones son difíciles y la mayoría de los programadores lograrían un efecto contrario.
No , son tan importantes en la investigación como en términos "absolutos" . Hay áreas donde la velocidad es importante ya que operan con gran cantidad de datos. En esta escala, las complejidades importan como se muestra en el ejemplo de Pavel.
Sin embargo, hay otros casos: ir "abajo" de los algoritmos sigue siendo una opción elegida cuando la velocidad es importante (HPC, dispositivos integrados, etc.). Encontrará en muchos grupos universitarios especializados en compiladores y / o optimización de software. Por ejemplo, un simple intercambio de orden de bucles puede acelerar mil veces solo porque utiliza la caché de manera eficiente, mientras que podría ser un ejemplo límite, la brecha de CPU y memoria creció 1000 veces en los últimos 30 años. También Computer Architecture es parte de CS. Por lo tanto, muchas de las mejoras en la velocidad de cálculo son, de hecho, una parte del campo general de CS.
En el aspecto industrial: cuando tiene un clúster HPC, la velocidad es importante porque un solo programa puede ejecutarse durante días, meses o años. No solo debe pagar la factura de electricidad, sino que esperar también puede costar dinero. Puede lanzar el doble de hardware, pero 700 millones de dólares difícilmente pueden considerarse un cambio de bolsillo para todas las compañías, excepto las más grandes; en tales casos, los programadores son la opción más barata y si reescribir el programa en un nuevo idioma significa solo una aceleración 'pequeña', podrían considéralo.
También la velocidad podría significar una mejor experiencia de usuario. Muchas revisiones del sistema operativo de teléfonos móviles indican cuál es 'más ágil' y, aunque puede hacerse mediante 'trucos', sin duda es un área de estudio. También desea acceder a sus datos más rápido y hacer rápidamente lo que necesita. A veces significa que puedes hacer más: en los juegos tienes 0.017 segundos para hacer todo y cuanto más rápido seas, más dulces podrás poner.