0Pricing
C# Academy · Leçon

Profilage et traces de base (concepts)

Mesurez le code avec Stopwatch, créez de petits périmètres de mesure, comprenez les identifiants de corrélation des traces et découvrez les bonnes pratiques élémentaires des micro-évaluations de performances.

Profilage et traces de base (concepts) est une leçon C# Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 3. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C# Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C# Academy comprend 3 leçons au total.

Principes de base du chronométrage et du traçage

Objectif :

  • Mesurer les chemins d’exécution critiques avec un chronomètre
  • Ajouter de petites portées de chronométrage pour les blocs
  • Utiliser des ID de corrélation de trace pour relier les événements
  • Éviter les mesures trop nombreuses

Démonstration du chronomètre

Utilisez un chronomètre pour mesurer la durée du code ; préchauffez-le d’abord et répétez l’opération afin de réduire le bruit du compilateur JIT.

using System;
using System.Diagnostics;
using System.Threading;

// Simple loop timing with warmup; C# 6 compatible.
public class Program
{
  static int Work(int n)
  {
    int s = 0;
    for (int i = 0; i < n; i++) s += i; // small CPU work
    return s;
  }

  public static void Main(string[] args)
  {
    // Warm up (JIT/caches)
    Work(10000);

    var sw = Stopwatch.StartNew();
    for (int r = 0; r < 10; r++)
    {
      Work(20000);
    }
    sw.Stop();

    Console.WriteLine("Elapsed ms (10 runs): " + sw.ElapsedMilliseconds);
  }
}

Fonction auxiliaire de portée de chronométrage

Entourez les blocs d’un TimeScope pour connaître la durée de sections nommées sans répéter le code du chronomètre.

using System;
using System.Diagnostics;

// A small scope that times a block and prints on dispose.
public sealed class TimeScope : IDisposable
{
  private readonly string _name;
  private readonly Stopwatch _sw;

  public TimeScope(string name)
  {
    _name = name;
    _sw = Stopwatch.StartNew();
  }

  public void Dispose()
  {
    _sw.Stop();
    Console.WriteLine(_name + " took " + _sw.ElapsedMilliseconds + " ms");
  }
}

public class Program
{
  static void DoWork()
  {
    // pretend work
    long s = 0;
    for (int i = 0; i < 300000; i++) s += i;
    if (s == -1) Console.WriteLine();
  }

  public static void Main(string[] args)
  {
    using (new TimeScope("DoWork"))
    {
      DoWork();
    }
  }
}

Démonstration de l’ID de corrélation

Définissez un ID de corrélation (ActivityId) pour relier les messages de trace associés entre les appels.

using System;
using System.Diagnostics;

// Use a correlation ID so related trace lines can be grouped.
public class Program
{
  public static void Main(string[] args)
  {
    Trace.Listeners.Clear();
    Trace.Listeners.Add(new ConsoleTraceListener());

    Guid id = Guid.NewGuid();
    Trace.CorrelationManager.ActivityId = id;

    Trace.TraceInformation("Start request");
    // ... do work
    Trace.TraceInformation("Processing step A");
    Trace.TraceInformation("Processing step B");
    Trace.TraceInformation("End request");

    Console.WriteLine("ActivityId: " + id);
  }
}

Présentation du profilage

  • Profileurs par échantillonnage : capturent périodiquement des instantanés de la pile (faible surcharge)
  • Instrumentation : mesure des blocs précis (chronomètre/portées de chronométrage)
  • Commencez globalement avec l’échantillonnage ; confirmez avec un chronométrage ciblé

Bonnes pratiques de mesure

Conseils :

  • Mesurez en version de publication avec les optimisations activées
  • Évitez les affichages dans la console à l’intérieur du code chronométré
  • Répétez les exécutions ; indiquez les moyennes
  • Mesurez des tailles d’entrée réalistes

Règle du microbenchmark

Vérification rapide : quelle est une bonne pratique de base lors de la mesure de code par microbenchmark avec un chronomètre ?

Récapitulatif

Récapitulatif : utilisez un chronomètre et de petites portées de chronométrage pour mesurer les blocs ; ajoutez un ID de corrélation pour relier les traces ; mesurez proprement (préchauffage, répétitions, version de publication).

Questions Fréquemment Posées

La leçon « Profilage et traces de base (concepts) » est-elle gratuite ?

Oui — le texte complet de « Profilage et traces de base (concepts) » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C# Academy, passe à CoddyKit PRO. Le cours C# Academy comprend 3 leçons au total.

Qu'est-ce que j'apprendrai dans « Profilage et traces de base (concepts) » ?

Mesurez le code avec Stopwatch, créez de petits périmètres de mesure, comprenez les identifiants de corrélation des traces et découvrez les bonnes pratiques élémentaires des micro-évaluations de perf… Tu pratiques C# Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer C# Academy ?

Aucune expérience préalable n'est requise. C# Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 3.

Combien de temps prend la leçon « Profilage et traces de base (concepts) » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon C# Academy ?

Oui. Chaque leçon C# Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Abstractions de journalisation, Debug/Trace
  2. Profilage et traces de base (concepts)
  3. Modèles de contrôle et de validation
← Retour à C# Academy