CodeBlanks Logo Icon CodeBlanks

Profiler aracı

Profiler ile kare başına zaman dağılımını öğrenirsin.

Profiler aracı nedir?

Profiler, oyununun her karede harcadığı CPU, GPU ve bellek miktarını detaylı incelemeni sağlayan analiz aracıdır. Kod bloklarının çalışma sürelerini görmek için Profiler.BeginSample ve Profiler.EndSample kullanılır.

using UnityEngine.Profiling;

Profiler.BeginSample("DusmanGuncelleme");
DusmanlariGuncelle();
Profiler.EndSample();

Bu sayede hangi fonksiyonun kare hızını (FPS) düşürdüğünü nokta atışı tespit edebilirsin.

CPU ve GPU darboğazları

Bir oyunda takılma yaşandığında darboğazın (bottleneck) nerede olduğunu bilmek gerekir. CPU süreleri yüksekse aşırı oyun mantığı, fizik hesaplaması veya çok fazla draw call vardır; GPU süreleri yüksekse karmaşık shader'lar veya aşırı piksel boyaması (overdraw) vardır.

// 60 FPS hedefinde her karenin 16.6 ms altinda bitmesi gerekir:
// CPU Suresi + GPU Suresi <= 16.6ms

Profilleme yapmadan rastgele optimizasyon yapmak genellikle gereksiz zaman kaybına yol açar.

Uygulama Kare süresi ve darboğaz raporla

Verilen cpuTime ve gpuTime değerlerini toplayarak total süreyi hesapla. Süresi büyük olan tarafı darboğaz olarak belirleyip Console.WriteLine ile ekrana yazdır.

Başlangıç kodu

Player.cs
using System;

class ProfilerReport
{
    static void Main()
    {
        float cpuTime = 18.4f;
        float gpuTime = 9.2f;
        // CPU ve GPU surelerini topla, buyuk olani darbogaz olarak yazdir
        
    }
}

Örnek çözüm

Player.cs
using System;

class ProfilerReport
{
    static void Main()
    {
        float cpuTime = 18.4f;
        float gpuTime = 9.2f;
        float total = cpuTime + gpuTime;
        string bottleneck = cpuTime > gpuTime ? "CPU" : "GPU";
        Console.WriteLine($"Kare: {total:F1}ms - Darbogaz: {bottleneck}");
    }
}

Beklenen çıktı

Kare: 27.6ms - Darbogaz: CPU

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Profiler.BeginSample ve Profiler.EndSample metodlarının temel işlevi nedir?

  • Kamera görüş açısındaki poligon sayısını yarıya indirmek
  • Sahnedeki tüm aktif nesneleri bellekten silmek
  • Belirli bir kod bloğunun CPU zaman çizelgesindeki süresini etiketleyip ölçmek Doğru cevap
  • Oyunun ekran çözünürlüğünü dinamik olarak artırmak

Açıklama: BeginSample ve EndSample çifti, aralarındaki kodun Profiler CPU hiyerarşisinde özel bir etiket altında görünmesini sağlar.

2 Örnekleme başlat

Soru
UnityEngine.Profiling.Profiler.____("FizikHesaplama");
Cevap
UnityEngine.Profiling.Profiler.BeginSample("FizikHesaplama");

Açıklama: Profiler sınıfında özel zamanlama bloğu BeginSample ile başlatılır.

3 Profiler kavramları

Kavram Anlamı
Profiler Kare süresi ve kaynak kullanımını izler
CPU Usage Kod mantığı ve fizik yükünü gösterir
GPU Usage Piksel ve gölgelendirici yükünü gösterir
Profiler.EndSample() Ölçülen örnek bloğunu sonlandırır

Uzman bölümündeki tüm dersler