0Pricing
C# Academy · Lección

Profiling básico y trazas (conceptos)

Mida el código con Stopwatch, cree pequeños ámbitos de medición, comprenda los identificadores de correlación de trazas y aprenda los fundamentos de la higiene en microbenchmarks.

Profiling básico y trazas (conceptos) es una lección gratuita de C# Academy en CoddyKit. Esta es la lección 2 de 3. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de C# Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C# Academy incluye 3 lecciones en total.

Conceptos básicos de medición y trazas

Objetivo:

  • Mida las rutas críticas con Stopwatch
  • Añada pequeños ámbitos de medición para los bloques
  • Use identificadores de correlación de trazas para vincular eventos
  • Evite las mediciones ruidosas

Demostración de Stopwatch

Use Stopwatch para medir el tiempo del código; haga primero un calentamiento y repita el trabajo para reducir el ruido del 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);
  }
}

Auxiliar de medición de tiempos

Envuelva los bloques en un TimeScope para ver la duración de secciones con nombre sin repetir el código de Stopwatch.

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();
    }
  }
}

Demostración del ID de correlación

Establezca un ID de correlación (ActivityId) para vincular los mensajes de traza relacionados entre distintas llamadas.

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);
  }
}

Introducción a la creación de perfiles

  • Perfiladores de muestreo: capturan periódicamente instantáneas de la pila (baja sobrecarga)
  • Instrumentación: mide bloques específicos (Stopwatch/ámbitos de medición)
  • Empiece con una visión amplia mediante muestreo; confirme con mediciones específicas

Buenas prácticas de medición

Consejos:

  • Mida en Release con las optimizaciones activadas
  • Evite Console.WriteLine dentro del código medido
  • Repita las ejecuciones; informe de los promedios
  • Mida con tamaños de entrada realistas

Regla para microbenchmarks

Comprobación rápida: ¿Cuál es una buena práctica básica al hacer microbenchmarks de código con Stopwatch?

Resumen

Resumen: Use Stopwatch y pequeños ámbitos de medición para medir bloques; añada un ID de correlación para vincular las trazas; mida correctamente (calentamiento, repetición y Release).

Preguntas frecuentes

¿La lección «Profiling básico y trazas (conceptos)» es gratis?

Sí — el texto completo de «Profiling básico y trazas (conceptos)» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de C# Academy, actualiza a CoddyKit PRO. El curso de C# Academy incluye 3 lecciones en total.

¿Qué aprenderé en «Profiling básico y trazas (conceptos)»?

Mida el código con Stopwatch, cree pequeños ámbitos de medición, comprenda los identificadores de correlación de trazas y aprenda los fundamentos de la higiene en microbenchmarks. Practicas C# Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar C# Academy?

No se requiere experiencia previa. C# Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 3.

¿Cuánto tiempo toma la lección «Profiling básico y trazas (conceptos)»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de C# Academy?

Sí. Cada lección de C# Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Abstracciones de logging y Debug/Trace
  2. Profiling básico y trazas (conceptos)
  3. Patrones de validación y guardas
← Volver a C# Academy