Qu'est-ce que BenchmarkDotNet et pourquoi l'utiliser ?
BenchmarkDotNet est une bibliothèque open source puissante et multiplateforme pour .NET, conçue pour mesurer avec précision les performances du code (benchmarking). Dans le développement logiciel, on doit souvent comparer plusieurs approches pour une même tâche : quel algorithme de tri est le plus rapide, quelle méthode de formatage de chaîne est la plus efficace, comment l'utilisation de différentes structures de données impacte la vitesse de l'application. BenchmarkDotNet répond à ce besoin de manière professionnelle.
Pourquoi l'utiliser ? Mesurer manuellement le temps avec Stopwatch comporte de nombreux risques : influence des processus en arrière-plan (compilation JIT, garbage collection, cache processeur), imprécision du timer système. BenchmarkDotNet automatise les étapes suivantes :
- Préchauffage (Warmup) : Exécute le code plusieurs fois avant la mesure pour stabiliser le compilateur JIT et le cache processeur.
- Itérations multiples : Lance la méthode de nombreuses fois et collecte des statistiques fiables.
- Analyse statistique : Calcule la moyenne, la médiane, l'écart type, le temps minimum et maximum.
- Isolation : Exécute chaque benchmark dans un processus séparé pour minimiser les interférences.
- Diagnostics : Mesure non seulement le temps, mais aussi l'allocation mémoire (Allocated), le nombre de collections GC et d'autres métriques.
Sans BenchmarkDotNet, vous risquez d'obtenir des résultats peu fiables et de tirer des conclusions erronées sur l'optimisation de votre code.
Installation de BenchmarkDotNet
L'installation de la bibliothèque BenchmarkDotNet dans un projet .NET (C#, F#, VB.NET) se fait via le gestionnaire de paquets NuGet. Voici trois méthodes principales :
1. Via .NET CLI (recommandé)
Ouvrez un terminal dans le dossier racine de votre projet et exécutez la commande :
dotnet add package BenchmarkDotNet
2. Via la console du gestionnaire de paquets dans Visual Studio
Ouvrez le menu Outils -> Gestionnaire de paquets NuGet -> Console du gestionnaire de paquets et exécutez :
Install-Package BenchmarkDotNet
3. Via l'interface graphique NuGet dans Visual Studio
Faites un clic droit sur le projet dans l'Explorateur de solutions, sélectionnez "Gérer les packages NuGet", recherchez "BenchmarkDotNet" et cliquez sur "Installer".
Important : Pour un fonctionnement correct, la bibliothèque nécessite que le projet soit compilé en configuration Release. La configuration Debug n'optimise pas le code, ce qui fausserait les résultats.
Démarrage rapide avec un exemple de code
Écrivons un benchmark simple qui compare deux méthodes de concaténation de chaînes : l'opérateur + et StringBuilder.
1. Créez un nouveau projet console .NET : dotnet new console -n MonBenchmark.
2. Installez la bibliothèque : dotnet add package BenchmarkDotNet.
3. Remplacez le contenu du fichier Program.cs par le code suivant :
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Running;
using System.Text;
public class StringConcatenationBenchmark
{
private const int N = 1000; // Nombre d'itérations dans la méthode
[Benchmark]
public string UsingPlusOperator()
{
string result = "";
for (int i = 0; i < N; i++)
{
result = result + "a";
}
return result;
}
[Benchmark]
public string UsingStringBuilder()
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < N; i++)
{
sb.Append("a");
}
return sb.ToString();
}
}
public class Program
{
public static void Main(string[] args)
{
var summary = BenchmarkRunner.Run<StringConcatenationBenchmark>();
}
} Aussi dans la bibliothèque
Surveillance des applications Rust avec la bibliothèque tracing
Générateur de QR codes en TypeScript : qrcode.js et qrcode-generator
cereal pour C++ : guide complet avec exemples