Oui, il est possible de réduire la consommation électrique en étant plus attentif lors de l'écriture des applications. C'est ainsi qu'Eric Mittelette, responsable du groupe développeurs de la division plateforme d'entreprise chez Microsoft France, a entamé sa session « développement d'applications vertes » aux Techdays'09 de Microsoft qui se sont tenus la semaine dernière à Paris. Tenant davantage du credo que de la méthode, sa déclaration était néanmoins inspirée par plusieurs expériences de développement réalisées wattmètre en main. Plus que de grandes leçons d'algorithmique et de programmation, il a fourni des pistes pour une programmation plus raisonnable. Ainsi le responsable Microsoft donne un premier conseil aux futurs développeurs verts : se munir d'un wattmètre pour mesurer la consommation des différentes versions de logiciel qu'ils écriront. « Sans mesure on ne peut rien faire », assène-t-il. Il suffit de brancher son PC sur l'appareil de mesure et de jauger la consommation des différentes versions de programmes en exécution. Equipé de la sorte, le développeur dispose aussi de plusieurs outils fournis par l'éditeur pour étudier la consommation des logiciels. Ainsi, dans Seven, l'utilitaire Xperf lance, en ligne de commande, un diagnostic de la consommation du système. Une fois arrêté, il génère un fichier d'informations concernant directement le noyau. Il indique par exemple les points chauds au niveau du processeur ou de l'activité du disque, etc. Powercfg, lui, crée un rapport appelé energy-report qui liste tous les problèmes de consommation identifiés au niveau de la machine et de son système. « On voit que le périphérique USB n'est pas entré en veille quand on l'a demandé, par exemple, indique Eric Vernié, chargé de la relation technique avec les développeurs. Ce document peut aussi signaler que la batterie est en mauvais état. » La parallèlisation n'est pas toujours une solution Wattmètre branché sur un portable, les deux responsables Microsoft ont procédé à plusieurs démonstrations de l'impact de certains changements au sein du code sur la consommation énergétique. Ainsi, Vista seul consomme 40 watts. Mais l'affichage d'une fractale de Mandelbrot, image issue d'un algorithme mathématique, fait monter le compteur jusqu'à 51 watts. En parallèlisant le programme pour un fonctionnement sur deux coeurs, la consommation descend à 43 watts en moyenne mais avec un pic à 56. Sur 6 coeurs, le même type de phénomène se produit. Conclusion : il est essentiel d'arbitrer entre exécution rapide et consommation. Moins compliquées, certaines astuces limiteront la gourmandise des programmes. L'utilisation de la fonction P-invoke dans .Net permet, par exemple, lorsqu'on débranche un portable du secteur et qu'il ne fonctionne plus que sur sa batterie, d'arrêter d'éventuelles animations en cours pour économiser l'énergie. On doit aussi préférer un accès direct à la mémoire plutôt qu'une copie d'objets. Enfin, pourquoi faire appel à une fonction mathématique telle que la racine carrée dans une bibliothèque idoine, alors qu'on peut l'écrire simplement en ligne ? Là-encore, la preuve fut faite par le tout puissant wattmètre. Pour économiser, le code doit aussi savoir gérer les diverses fonctions de mise en veille et de reprise ainsi que les transitions entre les deux états. Il doit résister aux défaillances logicielles, pour éviter la surconsommation d'un redémarrage entre autres. Eric Mittelette évoque par exemple la redondance de services ou de modules comme on la voit apparaître dans Live Mesh. Si un élément crashe, l'ensemble du logiciel retrouve néanmoins 'son chemin' au travers des services restants. Une question d'équilibre