IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

John Carmack : «le monde pourrait fonctionner sur du matériel plus ancien si l'optimisation logicielle était prioritaire»
L'ancien CTO d'Oculus réagit à un «exercice de pensée» sur une «apocalypse des CPU»

Le , par Stéphane le calme

79PARTAGES

41  0 
John Carmack, une célébrité dans le monde du développement de jeux vidéo et de la technologie, s'est souvent présenté comme un défenseur de l'optimisation logicielle. Ancien directeur technique d'Oculus VR et cofondateur d'id Software (une entreprise américaine de jeux vidéo qu'il a quitté en 2013), Carmack a redéfini ce que nous attendons d'un moteur de jeu et d'une expérience immersive. Récemment, il a lancé un débat audacieux qui pourrait bien bouleverser notre vision de l’évolution technologique : et si, en réalité, nous n’étions pas si dépendants du matériel dernier cri ?

Réagissant à un « exercice de pensée » publié sur le réseau social X (anciennement Twitter), qui parlait d’une « apocalypse des CPU », Carmack a exprimé son point de vue selon lequel le véritable problème n’est pas un manque de puissance des processeurs modernes, mais plutôt l'inefficacité des logiciels actuels. Si l’optimisation logicielle était traitée comme une priorité, il soutient que beaucoup plus de systèmes dans le monde pourraient fonctionner efficacement sur du matériel plus ancien, et ce, sans sacrifier la performance. En d’autres termes, les pressions du marché pousseraient les entreprises à améliorer drastiquement l'efficacité des logiciels si l'innovation matérielle s’arrêtait.

Il a répondu à un commentaire sur X qui disait :

Et si l'humanité oubliait comment fabriquer des processeurs ?

Imaginez le jour de l'arrêt total de la production (Zero Tape-out Day - Z-Day), le moment où plus aucune conception de silicium n'est fabriquée. Les conceptions de base avancées sont très mal loties.
Citation Envoyé par John Carmack
J'ai également réalisé cette expérience de pensée amusante ! Une plus grande partie du monde que ce que beaucoup imaginent pourrait fonctionner sur du matériel obsolète si l'optimisation logicielle était vraiment une priorité, et si les signaux de prix du marché sur le calcul rare permettaient d'y parvenir. Reconstruire tous les produits interprétés basés sur des microservices en bases de code natives monolithiques ! Les nouveaux produits innovants deviendraient beaucoup plus rares en l'absence d'un ordinateur super bon marché et évolutif, bien sûr.
L'inefficacité des logiciels : le véritable goulet d'étranglement

Dans un contexte où chaque nouvelle génération de processeurs et de cartes graphiques semble plus puissante que la précédente, Carmack défend l'idée que l’inefficacité des logiciels est le véritable frein à la performance. Plutôt que de dépendre de nouvelles puces chaque année, il imagine un monde où l'optimisation des logiciels permettrait de prolonger la vie des équipements existants, réduisant ainsi le besoin constant de mises à jour matérielles.

Aujourd’hui, les utilisateurs, qu’ils soient dans le domaine du jeu vidéo, du traitement de données ou même des applications professionnelles, sont constamment incités à mettre à jour leur matériel afin de tirer parti des dernières avancées en matière de performance. Cependant, pour Carmack, cette logique de renouvellement constant est alimentée par une négligence des bases mêmes du développement logiciel. Il critique notamment la manière dont les programmes modernes, y compris les jeux et les applications professionnelles, sont souvent conçus pour tirer parti de la puissance brute de nouveaux matériels sans chercher à optimiser l’utilisation des ressources existantes.

« Plus de parties du monde que beaucoup ne l'imaginent pourraient fonctionner sur du matériel obsolète si l'optimisation logicielle était vraiment une priorité », a déclaré Carmack. Cette réflexion soulève une question fondamentale : avons-nous vraiment besoin de processeurs toujours plus puissants, ou est-ce que nous pourrions exploiter mieux ce que nous avons déjà ?

Une solution radicale : revenir aux pratiques du passé

Pour Carmack, la solution pour surmonter cette dépendance au matériel est de revenir à des méthodes de développement plus efficaces, abandonnant les architectures modernes complexes au profit de techniques plus simples mais plus performantes. Sa proposition ? « Reconstruire tous les produits basés sur des microservices interprétés en bases de code natif monolithiques ! » Autrement dit, il préconise un retour aux bases du développement logiciel avec des codes optimisés et plus proches du matériel, une approche que l’on retrouvait dans les premières phases de l’informatique.

Ce retour aux anciennes méthodes de programmation soulève un défi majeur : la compatibilité et l’extensibilité des applications modernes. Les architectures actuelles reposent en grande partie sur des microservices, une méthode qui permet de développer des applications modulaires, évolutives et flexibles. Ces microservices, bien que puissants en termes de scalabilité et de gestion des ressources, ne sont pas aussi efficaces en termes de performance brute que les anciennes approches monolithiques, où tout le code était intégré dans une base de données unique, souvent optimisée pour un matériel spécifique.

Cependant, selon Carmack, cette approche plus traditionnelle offrirait une performance beaucoup plus élevée avec un matériel moins puissant. Il est convaincu que si le développement logiciel se concentrait sur l’optimisation du code, plutôt que de simplement se reposer sur la puissance des nouveaux processeurs, de nombreux systèmes obsolètes pourraient encore réaliser des tâches complexes.


Les compromis à accepter

Mais Carmack reconnaît que cette solution radicale ne viendrait pas sans coûts. D’un côté, la simplification du code et la recherche d’une optimisation maximale entraîneraient des gains de performance considérables, mais de l’autre, l'innovation pourrait en souffrir. En effet, le développement de nouveaux produits « innovants » serait beaucoup plus difficile sans l’accès à des infrastructures informatiques bon marché et évolutives.

Carmack note que les approches actuelles qui privilégient les microservices et le cloud computing permettent de créer des produits à grande échelle de manière rapide et flexible, mais cette évolution a un prix en termes d’efficacité. Par conséquent, il est à la fois passionné et prudent dans sa proposition de revenir à une architecture de code monolithique : bien qu’elle améliore les performances, elle pourrait rendre la création de nouveaux produits plus difficile, car les outils modernes de développement ne sont pas conçus pour cette approche.

[TWITTER]<blockquote class="twitter-tweet"><p lang="en" dir="ltr">I have also run this fun thought experiment! More of the world than many might imagine could run on outdated hardware if software optimization was truly a priority, and market price signals on scarce compute would make it happen. Rebuild all the interpreted microservice based… <a href="https://t.co/lmE9oF07YQ">https://t.co/lmE9oF07YQ</a></p>— John Carmack (@ID_AA_Carmack) <a href="https://twitter.com/ID_AA_Carmack/status/1922100771392520710?ref_src=twsrc%5Etfw">May 13, 2025</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> [/TWITTER]

L’impact d’un monde sans matériel dernier cri

Cette réflexion a des implications qui vont bien au-delà...
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de RenarddeFeu
Membre averti https://www.developpez.com
Le 15/05/2025 à 0:41
Très clairement, le web moderne fonctionne grâce à des navigateurs qui ont besoin d'un processeur de plusieurs GHz pour fonctionner, en consommant plus d'un Go de mémoire, tout ça pour afficher du texte.
21  0 
Avatar de pyros
Membre expérimenté https://www.developpez.com
Le 15/05/2025 à 9:30
Je bosse sur du data-processing/data-viz sur large data. Vous savez quelle est le bottleneck le plus courant ? Les cache-miss ? La latence mémoire ? Le bus DMA ? Les core saturé ?

Non... L'API REST qui te crache un dictionnaire JSON pour stocker un tableau de valeurs...
5  0 
Avatar de smarties
Expert confirmé https://www.developpez.com
Le 15/05/2025 à 9:35
Il y a des optimisations "simples" pour le web déjà à faire :
- utilisation de sprites
- réduire la publicité et le tracking
- utiliser des langages performants
- arrêter de demander des inscriptions pour tout et n'importe quoi, ça grossit les BDD
- ...
4  0 
Avatar de DragOr
Membre du Club https://www.developpez.com
Le 15/05/2025 à 9:58
Imaginez ce que cela va donner avec le code generer par les "ia"...
Ça fait longtemps qu'on se laisse déborder par tout un tas d'outils ou de framework, bien loin des débuts ou la performance était reine.
3  0 
Avatar de OrthodoxWindows
Membre expert https://www.developpez.com
Le 15/05/2025 à 21:02
Citation Envoyé par smarties Voir le message
Il y a des optimisations "simples" pour le web déjà à faire :
- utilisation de sprites
- réduire la publicité et le tracking
- utiliser des langages performants
- arrêter de demander des inscriptions pour tout et n'importe quoi, ça grossit les BDD
- ...
Avec tout ça, la consommation d'énergie du web serai énormément réduite. Rien qu'avec NoScript, les pages se chargent beaucoup plus vite, la différence est énorme.

D'autre part, même pour les applications native, il y a une grosse divergence. Sous Windows, tout ce qui est Win32/C est largement plus rapide, moins consommateur de CPU et de RAM. Sous Linux, cela se vois aussi, mais moins, car les programmes modernes ont tendance à être plus optimisé que sous Windows.
Quand à Android, c'est une catastrophe, entre le sandboxing généralisé et les nombreuses applications en langage web.
D'ailleurs, quelque soit le système, il y a aujourd'hui le fléau nommé électron
3  0 
Avatar de Rep.Movs
Membre actif https://www.developpez.com
Le 16/05/2025 à 7:57
Les unités de calcul en virgule flottante sont au top, les unités IA et GPGPU sont sur les starting blocs.

Mais un ordi va beaucoup:
  • chiffrer/déchiffrer
  • comparer des chaînes de caractères/interpréter du texte


Ben oui: entre les échanges de données en format texte à structure un peu molle (json), l'indexation de tout par texte ou lieu d'index (table de données, résultats SQL), les scripts dans tous les sens, les valeurs en texte (couleurs, taille), le tout en unicode ou UTF8 (donc il faut transformer la représentation), l'absence de format qui permette réellement une interprétation linéaire sans attendr ela fin du fichier (XML et JSON nécessite pour être juste la totalité du fichier, difficile de commencer d'interpréter avant d'avoir tout reçu), les calculs en texte pour être précis là où ce n'est pas nécessaire, les langages en bytecode qui appellent des fonctions par leur nom...

Pour rappel: la comparaison entre 2 chaînes de caractères qui prend le plus de temps, c'est celle qui match (puisqu'on est sûr d'avoir parcouru TOUS les caractères)

Vous savez quelle CPU a des instructions qui aidait pour tout cela (sauf l'UTF8)? Le 8086. Et vous savez que ces instructions ne sont plus utilisables en 32 et 64 bits ?

Enfin, le choix quasi permanent de regénérer le contenu (à partir de requêtes, en concaténant) au lieu de le livrer tout fait. Même actuellement, la concaténation de chaînes de caractères (pour construire un JSON, un HTML) est un domaine complexe à optimiser.

Je me rappelle encore d'un exemple où pour optimiser un algo C#, j'ai remplacé les nom des colonnes dans les accesseurs à un datatable/datarow par les index que j'avais récupérés avant la boucle. Résultat: vitesse *10 direct, et moins de GC...
3  0 
Avatar de ddoumeche
Membre extrêmement actif https://www.developpez.com
Le 15/05/2025 à 14:04
Citation Envoyé par pyros Voir le message
Je bosse sur du data-processing/data-viz sur large data. Vous savez quelle est le bottleneck le plus courant ? Les cache-miss ? La latence mémoire ? Le bus DMA ? Les core saturé ?

Non... L'API REST qui te crache un dictionnaire JSON pour stocker un tableau de valeurs...
Les accès aux données ont toujours été le goulet d'étranglement des applications, que ce soit en web, en client lourd, en rest ou en Soap. Surtout si on utilise une api de sérialisation "lente" comme JavaIO au lieu de librairies optimisées, mais encore plus quand votre SQL n'est pas soigné aux petits oignons.
Seulement DBA c'est un métier.
2  0 
Avatar de fodger75
Nouveau Candidat au Club https://www.developpez.com
Le 15/05/2025 à 15:17
C'est tellement vrai ! Le ratio énergie dépensée / coût instruction est peut être souvent moins bon aujourd'hui dans de nombreux cas (web en particulier).
2  0 
Avatar de cpcdos
Membre chevronné https://www.developpez.com
Le 19/05/2025 à 23:03
Ça confirme bien mes choix personnels de continuer à développer mes logiciels (personnels et professionnels pour les clients) sur un de mes vieux Lenovo B590 depuis que j'étais étudiant.

Tout faire en sorte que ça fonctionne bien sur du vieux matos de 2014 optimiser sur les vieux proc, les rendu 3D pareil, je me force à utiliser encore ces vieux GPU intégré Intel HD400, c'est pourri mais si tu te démerdes à optimiser tes boucles, atteindre 30 fps pour des gros rendu directx11 t'es le roi 👍

Depuis mes premiers clients il y a 6 ans, ils ont des PC récents, mes livrables sont merveilleusement super bien optimisés et je ne regrette rien 🙏

(Bien évidemment j'ai aussi un PC i9 RTX4090 pour faire de la non reg et me satisfaire des performances)

Felly Software est développé intégralement sur ce Lenovo 🙏
2  0 
Avatar de LeBressaud
Membre confirmé https://www.developpez.com
Le 15/05/2025 à 10:35
Citation Envoyé par RenarddeFeu Voir le message
Très clairement, le web moderne fonctionne grâce à des navigateurs qui ont besoin d'un processeur de plusieurs GHz pour fonctionner, en consommant plus d'un Go de mémoire, tout ça pour afficher du texte.
Attention quand même à distinguer la mémoire réservé de la mémoire réellement utilisé, s'il y'a de la place les apps en réserve souvent une grosse quantité au cas où quitte à la rendre par la suite si nécessaire
1  0