0Pricing
C# Academy · Ders

Temel profil oluşturma ve izler (kavramlar)

Stopwatch ile kodu ölçün, küçük zamanlama kapsamları oluşturun, iz ilişkilendirme kimliklerini anlayın ve mikro kıyaslama için temel iyi uygulamaları öğrenin.

Temel profil oluşturma ve izler (kavramlar), CoddyKit'te ücretsiz bir C# Academy dersidir. Bu, 3 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C# Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C# Academy kursu toplamda 3 dersten oluşur.

Zamanlama ve izleme temelleri

Amaç:

  • Etkin kod yollarını Kronometre ile ölçün
  • Bloklar için küçük zamanlama kapsamları ekleyin
  • Olayları ilişkilendirmek için izleme ilişkilendirme kimliklerini kullanın
  • Gereksiz ölçümlerden kaçının

Kronometre gösterimi

Kodu zamanlamak için Kronometre kullanın; önce ısınma çalıştırın ve JIT gürültüsünü azaltmak için işi tekrarlayın.

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

Zamanlama kapsamı yardımcısı

Stopwatch kodunu tekrarlamadan adlandırılmış bölümlerin süresini görmek için blokları bir TimeScope içine alın.

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

İlişkilendirme kimliği gösterimi

Çağrılar arasındaki ilişkili izleme iletilerini birbirine bağlamak için bir ilişkilendirme kimliği (ActivityId) ayarlayın.

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

Profil oluşturmaya genel bakış

  • Örnekleme profilleyicileri: yığın anlık görüntülerini düzenli aralıklarla yakalar (düşük ek yük)
  • Enstrümantasyon: belirli blokları ölçer (Kronometre/zamanlama kapsamları)
  • Örneklemeyle geniş başlayın; hedefli zamanlamayla doğrulayın

Ölçüm için iyi uygulamalar

İpuçları:

  • İyileştirmeler etkin durumdayken Yayın derlemesinde ölçün
  • Zamanlanan kodun içinde Console.WriteLine kullanmaktan kaçının
  • Çalıştırmaları tekrarlayın; ortalamaları bildirin
  • Gerçekçi girdi boyutlarını zamanlayın

Mikro ölçüm kuralı

Hızlı kontrol: Kronometre ile kod üzerinde mikro ölçüm yaparken iyi bir temel uygulama nedir?

Özet

Özet: Blokları zamanlamak için Kronometre ve küçük zamanlama kapsamları kullanın; izlemeleri birbirine bağlamak için bir ilişkilendirme kimliği ekleyin; temiz ölçüm yapın (ısınma, tekrarlama, Yayın).

Sıkça Sorulan Sorular

“Temel profil oluşturma ve izler (kavramlar)” dersi ücretsiz mi?

Evet — “Temel profil oluşturma ve izler (kavramlar)” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C# Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C# Academy kursu toplamda 3 dersten oluşur.

“Temel profil oluşturma ve izler (kavramlar)” dersinde ne öğreneceğim?

Stopwatch ile kodu ölçün, küçük zamanlama kapsamları oluşturun, iz ilişkilendirme kimliklerini anlayın ve mikro kıyaslama için temel iyi uygulamaları öğrenin. C# Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

C# Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te C# Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 3 dersinin 2. dersidir.

“Temel profil oluşturma ve izler (kavramlar)” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu C# Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her C# Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Günlük kaydı soyutlamaları, Debug/Trace
  2. Temel profil oluşturma ve izler (kavramlar)
  3. Koruma ve doğrulama kalıpları
← C# Academy Sayfasına Dön