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
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
- Abstracciones de logging y Debug/Trace
- Profiling básico y trazas (conceptos)
- Patrones de validación y guardas