Présentation du benchmark Parsimony

Parsimony propose une métrique centrée sur la taille nette du code généré par les agents de programmation assistés par IA. Le tableau de bord classe les modèles selon le nombre moyen d'unités de code nettes ajoutées sur les tâches résolues, le score le plus bas étant considéré comme le plus « parcimonieux ».

Méthodologie de comptage des unités de code

Chaque correctif publié par les benchmarks existants (notamment SWE‑bench) est analysé : les fichiers modifiés sont parsés et chaque élément syntaxique – déclarations, appels, comparaisons, noms, littéraux – compte pour une unité. Les lignes de texte ne sont pas prises en compte, ce qui empêche le « bourrage » de code. Le calcul final est unités ajoutées − unités supprimées = unités nettes. Les données d’exemple montrent des valeurs très variables, par exemple : +84,8 unités nettes pour une modification, –13,4 pour une autre, ou encore –0,0 lorsqu’aucune différence n’est détectée.

def has_negative(values):
    found = False
    for value in values:
        if value < 0:
            found = True
    return found

def has_negative(values):
    return any(value < 0 for value in values)

Le code ci‑dessus illustre deux implémentations d’une même fonction ; le premier fragment compte davantage d’instructions (boucle, assignation) que le second, ce qui se traduit par un nombre d’unités supérieur.

Résultats et corrélations observées

Le classement utilise la moyenne des unités nettes sur les tâches résolues, y compris les tentatives échouées. Par exemple, le modèle GPT‑5.6 Sol a ajouté 0,88 × le code de sa version publiée, ce qui le place parmi les modèles les plus économes. Une analyse de corrélation indique que les modèles qui génèrent plus de code résolvent davantage de tâches, avec un coefficient de Spearman compris entre 0,33 et 0,60 sur les tableaux contenant plus de 26 modèles.

Limites et perspectives d’utilisation

Parsimony ne mesure que la taille syntaxique du code Python ; les fichiers de tests, la documentation et les artefacts générés sont exclus. Aucun test n’est exécuté, le statut « résolu » provient des résultats publiés par SWE‑bench. Ainsi, la métrique ne reflète ni la lisibilité, ni la qualité architecturale du code. De plus, tous les modèles sont évalués avec le même agent mini‑SWE‑agent, mais les différences d’implémentation de l’agent peuvent encore influencer le nombre d’unités générées. Malgré ces contraintes, Parsimony fournit un repère quantitatif utile pour comparer la propension des modèles à « gonfler » le code, ce qui peut guider le choix d’un agent lorsqu’une base de code maintenable est prioritaire.