Des discussions sur la consommation énergétique du « numérique » et plus généralement les mesures à adopter afin de diminuer les émissions de gaz à effet de serre, m’ont rappelé à l’esprit des discussions sur un sujet plus simple, à savoir l’optimisation en temps des calculs informatiques. Ce sujet est moins chargé émotionnellement et idéologiquement, mais il me semble qu’il met en jeu en partie les mêmes mécanismes psychologiques ; il me semble donc intéressant de l’évoquer ici — peut-être pouvons-nous en tirer quelques enseignements politiques.

Voyons de quoi il s’agit. Le même programme informatique peut s’exécuter, sur le même matériel, à des vitesses différentes suivant comment il a été « traduit » en le langage de la machine. Autrement dit, on peut optimiser différemment l’exécution du même programme.

Certaines optimisations possibles sont directement visibles en regardant le programme tel qu’il s’exécute sur la machine : on voit telle ou telle construction inutile, tel ou tel gâchis. Comment donc, il est absolument intolérable qu’on ne les ait pas éliminés !

Or, parmi les optimisations les plus évidentes, il y en a qui, en fait, ne rapportent pas grand-chose. Certes, le gâchis existe, mais si on le supprime on gagne, mettons, 0,5 % sur le temps d’exécution. Par comparaison, une optimisation moins évidente pourra gagner 20 % voire plus.

On dira que 0,5 %, c’est déjà cela de gagné, que les petits ruisseaux font les grandes rivières. Certes. Toutefois, le temps et l’attention qui seront dépensés pour mettre en œuvre l’optimisation qui gagnera 0,5 % ne le seront pas pour l’optimisation qui gagnerait 20 %. La difficulté est que chaque optimisation demande un certain effort de développement, et surtout un certain effort de validation (Ne conduit-elle pas à des résultats incorrects dans certains cas ? Ne peut-elle dégrader les performances dans certaines circonstances, d’où un bénéfice global nul voire négatif ?).

Il est donc important de hiérarchiser les priorités, et de faire porter les efforts sur ce qui peut rapporter les gains les plus importants à effort de développement et de validation égaux. Ceci peut paraître de bon sens, mais va à l’encontre de la réaction immédiate, qui est de se focaliser sur les gâchis les plus visibles, même s’ils sont d’importance mineure.

La compilation optimisante est un domaine complexe, mais relativement bien balisé, par rapport à l’optimisation des comportements énergétiques de la population. Quels enseignements pouvons-nous cependant tirer de ses pratiques ?

Une recommandation importante en informatique « pratique » est qu’il faut mesurer, et non spéculer. En d’autres termes, il ne faut pas s’en tenir à son intuition, ses convictions, ses théories sur ce qui fait provoquer un gain ou une perte, il faut mesurer ceux-ci ; ce qui impose d’ailleurs de se doter d’un protocole expérimental, ou du moins de bien comprendre ce que l’on mesure et par rapport à quels paramètres on fait évoluer cette mesure.

L’aspect psychologique est important. Même des ingénieurs expérimentés peuvent se laisser aller à se focaliser sur un point certes bien visible, mais d’importance anecdotique. Notamment, il est facile de se laisser à prêter une attention démesurée à un gâchis réel, mais qui se produit peu fréquemment, et à négliger un petit gâchis qui se produit des milliers, des millions, de fois plus fréquemment. Un peu comme se focaliser sur la consommation de fioul d’un porte-conteneur sans voir celle de millions de véhicules individuels…

Lorsque je vois des discussions sur les consommations énergétiques et les mesures à apporter, je suis souvent frappé de l’absence de mesures chiffrées, ou, en leur présence, par l’absence de protocole expérimental, ou même simplement de la définition de ce qui est mesuré.

Pourquoi cela m’inquiète-t-il ? Pourquoi refuser de remédier à des gâchis, même si ceux-ci sont moins importants qu’on ne le croit ? Tout simplement parce que notre attention, notre temps de débat, notre capacité d’effort, sont limitées. Si nous les dépensons sur des problèmes mineurs, nous ne seront pas en mesure d’accorder d’importance à des problèmes plus importants, un peu comme lorsque dans une assemblée générale de copropriété, on passe du temps sur une dépense de 500€ et qu’on n’a plus de temps pour discuter d’une dépense de 50000€.