Oui , ils sont «relativement» moins importants dans une large industrie. L'éditeur de texte peut être «assez rapide» et n'a pas besoin de beaucoup d'améliorations. Une grande partie de l'effort informatique consiste à s'assurer que le composant A écrit en Java fonctionne avec le composant B écrit avec C communique correctement via une file d'attente de messages écrite en Cobol (ou quelque chose), ou pour mettre le produit sur le marché, etc.
De plus, l'architecture s'est compliquée. Lorsque vous aviez de vieux processeurs simples où vous aviez 1 instruction par cycle et que vous écriviez dans l'assemblage, les optimisations étaient «faciles» (il vous suffisait de compter le nombre d'instructions). Actuellement, vous ne disposez pas d'un processeur simple mais d'un processeur super-scalaire entièrement hors pipeline avec renommage des registres et cache à plusieurs niveaux. Et vous n'écrivez pas en assembleur mais en C / Java / etc. où le code est compilé / JITed (généralement pour un meilleur code que vous ou moi écrivions en assembleur), ou en Python / Ruby / ... où le code est interprété et vous êtes séparé par plusieurs niveaux d'abstraction de la machine. Les microoptimalisations sont difficiles et la plupart des programmeurs auraient un effet opposé.
Non , ils sont toujours aussi importants dans la recherche et en termes «absolus» . Il existe des domaines où la vitesse est importante car ils fonctionnent sur une grande quantité de données. A cette échelle, les complexités comptent comme le montre l'exemple de Pavel.
Cependant, il existe d'autres cas - descendre des algorithmes est toujours une option choisie lorsque la vitesse est importante (HPC, périphériques intégrés, etc.). Vous trouverez sur de nombreuses universités des groupes spécialisés dans les compilateurs et / ou l'optimisation logicielle. Par exemple, un simple échange de l'ordre des boucles peut obtenir une accélération de mille fois simplement parce qu'il utilise efficacement le cache - alors qu'il pourrait s'agir d'un exemple limite, l'écart entre la CPU et la mémoire a augmenté de 1000 fois au cours des 30 dernières années. L'architecture informatique fait également partie de CS. Par conséquent, bon nombre des améliorations de la vitesse de calcul font en fait partie du domaine CS général.
Du côté industriel - lorsque vous avez un cluster HPC, la vitesse est importante car un seul programme peut fonctionner pendant des jours, des mois ou des années. Non seulement vous devez payer la facture d'électricité, mais attendre peut également coûter de l'argent. Vous pouvez jeter deux fois plus de matériel, mais 700 millions de dollars peuvent difficilement être considérés comme un changement de poche pour toutes les entreprises, sauf les plus grandes - dans de tels cas, les programmeurs sont l'option la moins chère et si la réécriture du programme dans un nouveau langage signifie juste une `` petite '' accélération - ils pourraient considère-le.
La vitesse peut également signifier une meilleure UX. De nombreux avis sur les téléphones portables indiquent que le système d'exploitation est «plus vif» et bien que cela puisse être fait par des «astuces», c'est certainement un domaine d'étude. Vous souhaitez également accéder à vos données plus rapidement et faire rapidement ce dont vous avez besoin. Parfois, cela signifie que vous pouvez faire plus - dans les jeux, vous avez 0,017s pour tout faire et plus vous êtes rapide, plus vous pouvez mettre de bonbons.