Périmètre, provenance, reproduction
Une méthode lisible, des limites explicites.
Une mesure n’est utile que si l’on sait ce qu’elle décrit. Voici comment les résultats historiques sont transformés en tableaux, et ce qu’ils ne permettent pas de conclure.
Des CSV hérités, pas une nouvelle expérience.
Le corpus contient 4 450 observations lisibles dans 33 CSV. L’analyse principale utilise 3 950 observations provenant des 28 fichiers non préfixés par x. Les variantes restent disponibles séparément : 400 de leurs lignes ont les mêmes valeurs qu’une observation principale du même langage.
Le matériel, les versions des compilateurs, les paramètres et les codes de sortie de chaque observation ne sont pas enregistrés dans ces CSV. Le commit exact de la copie d’origine n’est pas établi. Les Makefiles actuels ne suffisent pas à reconstituer les conditions de mesure.
Le domaine PKG correspond au package processeur. Il ne mesure pas toute la machine. Le domaine CPU est une composante du package : additionner PKG et CPU compterait deux fois une partie de l’énergie.
Les anomalies sont signalées, jamais masquées.
- Une énergie négative, une valeur non finie, un PKG absent ou non positif, ou un temps absent ou non positif rend la ligne numériquement invalide. 39 lignes principales sont retirées des statistiques.
- Une série est écartée des croisements si elle comprend au moins une durée inférieure à 10 ms, moins de 5 observations valides, ou un rapport supérieur à 2 entre les médianes temporelles de ses blocs contigus.
- Un bloc est une suite de lignes du même benchmark ; il ne constitue pas un identifiant de session. Les changements internes à un bloc peuvent rester indétectables.
- Les variantes
x*.csvne sont pas fusionnées avec les fichiers principaux. Le choix du fichier non préfixé est une convention, pas une preuve de qualité supérieure.
23 séries sont ainsi écartées des croisements, mais restent dans les tableaux. Le seuil de 10 ms est un signal de contrôle, pas une preuve d’échec. Ces filtres peuvent introduire un biais de sélection ; aucune série n’est déclarée scientifiquement validée par leur seul passage.
Les calculs, sans raccourci.
- Temps en secondes
- temps en millisecondes / 1 000
- Puissance moyenne d’une exécution
- énergie PKG / durée, en watts
- Produit énergie–délai
- énergie PKG × durée, en J·s
- Dispersion relative
- (quartile 75 % − quartile 25 %) / médiane × 100
La puissance publiée est la médiane des rapports par observation, et non le rapport de deux médianes. Même règle pour le produit énergie–délai. Les quartiles utilisent l’interpolation linéaire au rang (n − 1) × p.
Les corrélations de Spearman sont calculées par benchmark, entre médianes des séries retenues, avec rang moyen pour les ex æquo. Les barres des graphiques sont des quartiles, pas des intervalles de confiance.
Reproduire les tableaux.
Les calculs utilisent uniquement la bibliothèque standard Python. Aucun benchmark n’est exécuté par cette commande :
git clone https://github.com/Institut-du-Numerique-Responsable/Energy-Languages.git
cd Energy-Languages
python3 scripts/analyze_results.py
python3 -m unittest discover -s tests -vLa suite complète de tests nécessite aussi un compilateur C, Make et Bash. Pour régénérer les graphiques, installez Matplotlib puis ajoutez --plots à la commande d’analyse. Les empreintes SHA-256 des sources permettent de vérifier le corpus utilisé.
Les prochaines analyses à construire.
Une campagne contrôlée permettrait d’aller plus loin que la description du corpus historique :
- Langage × charge de travail : mêmes entrées et sorties vérifiées, ratios par benchmark et couverture commune.
- Énergie × latence : repérer les compromis de Pareto avec une incertitude mesurée et un seuil de latence utile.
- Mémoire × énergie : enregistrer le pic RSS en octets. L’énergie DRAM en joules ne remplace pas cette mesure.
- Parallélisme × puissance : contrôler les threads, sockets, fréquences et la charge de fond.
- Runtime × échauffement : distinguer le démarrage et le régime établi, documenter JIT et GC, randomiser l’ordre.
- Énergie × carbone : mesurer le système complet et disposer d’un facteur électrique daté et localisé. Les seuls PKG J ne suffisent pas.
Origine, auteurs et citation.
Le projet original Energy-Languages de Green Software Lab rassemble des implémentations du Computer Language Benchmark Game. Cette édition indépendante est maintenue par l’Institut du Numérique Responsable.
Auteurs originaux : Rui Pereira, Marco Couto, Francisco Ribeiro, Rui Rua, Jácome Cunha, João Paulo Fernandes et João Saraiva.
« Energy Efficiency across Programming Languages: How does Energy, Time and Memory Relate? » — SLE 2017.
Les améliorations INR concernent la fiabilité des outils et la documentation des résultats. Les attributions des fichiers sources et la licence MIT d’origine sont conservées.
Pour citer cette analyse, indiquez « Energy Languages — édition INR, analyse descriptive des CSV hérités », l’URL de cette page et le commit Git utilisé. Ne l’attribuez pas à une nouvelle campagne de mesures.
Consulter le rapport complet versionné