0Pricing
C# Academy · Aula

Criação de perfis e rastreamentos básicos (conceitos)

Meça o código com Stopwatch, crie pequenos escopos de medição, entenda os identificadores de correlação de rastreamentos e aprenda os fundamentos de higiene em microavaliações de desempenho.

Criação de perfis e rastreamentos básicos (conceitos) é uma aula grátis de C# Academy no CoddyKit. Esta é a aula 2 de 3. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de C# Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de C# Academy inclui 3 aulas no total.

Noções básicas de medição de tempo e rastreamento

Objetivo:

  • Medir caminhos críticos com Cronômetro
  • Adicionar pequenos escopos de medição de tempo para blocos
  • Usar IDs de correlação de rastreamento para vincular eventos
  • Evitar medições excessivamente numerosas

Demonstração de Cronômetro

Use Cronômetro para medir o tempo do código; faça um aquecimento primeiro e repita o trabalho para reduzir as variações causadas pelo 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 escopo de medição de tempo

Envolva os blocos em um TimeScope para ver a duração de seções nomeadas sem repetir o código do Cronômetro.

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

Demonstração de ID de correlação

Defina um ID de correlação (ActivityId) para vincular mensagens de rastreamento relacionadas entre chamadas.

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

Visão geral da criação de perfis

  • Ferramentas de criação de perfis por amostragem: capturam periodicamente instantâneos da pilha (baixa sobrecarga)
  • Instrumentação: mede blocos específicos (Cronômetro/escopos de medição de tempo)
  • Comece de forma ampla com amostragem; confirme com medições direcionadas

Boas práticas de medição

Dicas:

  • Faça medições em Lançamento, com otimizações
  • Evite Console.WriteLine dentro do código cronometrado
  • Repita as execuções; informe as médias
  • Meça tamanhos de entrada realistas

Regra para microcomparações de desempenho

Verificação rápida: qual é uma boa prática básica ao fazer microcomparações de desempenho do código com Cronômetro?

Recapitulação

Recapitulação: use Cronômetro e pequenos escopos de medição de tempo para medir blocos; adicione um ID de correlação para vincular rastreamentos; faça medições de forma adequada (aquecimento, repetição, Lançamento).

Perguntas Frequentes

A aula “Criação de perfis e rastreamentos básicos (conceitos)” é grátis?

Sim — o texto completo de “Criação de perfis e rastreamentos básicos (conceitos)” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de C# Academy, atualize para CoddyKit PRO. O curso de C# Academy inclui 3 aulas no total.

O que vou aprender em “Criação de perfis e rastreamentos básicos (conceitos)”?

Meça o código com Stopwatch, crie pequenos escopos de medição, entenda os identificadores de correlação de rastreamentos e aprenda os fundamentos de higiene em microavaliações de desempenho. Você pratica C# Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar C# Academy?

Nenhuma experiência prévia é necessária. C# Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 3.

Quanto tempo leva a aula “Criação de perfis e rastreamentos básicos (conceitos)”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de C# Academy?

Sim. Cada aula de C# Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Abstrações de registro, Debug/Trace
  2. Criação de perfis e rastreamentos básicos (conceitos)
  3. Padrões de proteção e validação
← Voltar para C# Academy