Mobil geliştirmede Profiling (profil oluşturma): özü, metrikler ve araçlar

Yazar: IT Sectr Yayınlanma: 2026-03-30 Okuma süresi: 9 dk

Profiling (profil oluşturma), uygulama performansını temel metrikler (CPU yükü, bellek tüketimi, ağ trafiği ve enerji kullanımı) üzerinden ölçme sürecidir. Profil oluşturmanın amacı, uygulamayı yavaşlatan veya aşırı kaynak tüketimine neden olan darboğazları bulmaktır. Android Developers'a göre, geliştirme sırasında düzenli profil oluşturma, üretimdeki performans hatalarının sayısını %60'a kadar azaltır ve düşük seviyeli cihazlarda bile akıcı bir UI sağlanmasına yardımcı olur.

Önemli Noktalar

  • Profiling — darboğazları bulmak için CPU, Bellek, Ağ ve Enerji ölçümü.
  • CPU profilleme hangi yöntemlerin ve iş parçacıklarının işlemciyi yüklediğini gösterir.
  • Bellek profilleme sızıntıları, yinelenen nesneleri ve optimal olmayan tahsisatları bulur.
  • Ağ profilleme sunucu isteklerinin boyutunu ve süresini izler.
  • Enerji profilleme pil tüketimini hızlandıran işlemleri belirler.

Mobil geliştirmede profil oluşturma nedir?

Profiling, bir uygulamanın nasıl çalıştığına dair verilerin toplanması ve analizidir: hangi işlevler yürütülür, ne kadar sürer, ne kadar bellek tüketir ve ağ ile nasıl etkileşime girer. Günlük kaydının (logging) aksine, profil oluşturma sistem düzeyinde çalışır ve öznel değerlendirmeler yerine kesin sayısal metrikler sağlar.

Profil oluşturmanın temel amacı, kaynakları optimal olmayan şekilde kullanan kod bölümlerini bulmaktır. Bunlar, UI iş parçacığında çağrılan yavaş yöntemler, bellek sızıntıları, verimsiz SQL sorguları, aşırı ağ çağrıları veya aşırı enerji tüketimi olabilir. Profil oluşturma olmadan, geliştiriciler gerçek verilere güvenmek yerine “yavaş hissettiren” şeyleri düzeltir.

Google I/O 2023'e göre, geliştirme sırasında düzenli profil oluşturmaya tabi tutulan uygulamalar %40 daha az ANR (Uygulama Yanıt Vermiyor) hatası ve %50 daha az OutOfMemory çökmesi gösterir. Profil oluşturma araçları tüm modern IDE'lere entegre edilmiştir — Android için Android Studio Profiler ve iOS için Xcode Instruments.

Profil oluşturma statik (yürütme olmadan kod analizi — lint, Detekt) ve dinamik (uygulama çalışma zamanı sırasında ölçüm) olabilir. Gerçek performans sorunlarını bulmak için, bir cihaz veya emülatörde uygulamanın gerçek davranışını gösteren dinamik profil oluşturma kullanılır.

Profil oluşturma ne zaman yapılmalı

Her büyük sürümden önce, ağır UI bileşenleri (listeler, animasyonlar, özel Görünümler) tanıtılırken, kullanıcılar yavaşlık ve pil tüketiminden şikayet ettiğinde ve uygulama mimarisi değiştirildikten sonra profil oluşturma gereklidir. Sistematik bir yaklaşım, her sprintte profil oluşturma yapmak ve metriklerin bir temel çizgisini kaydetmektir.

CPU profilleme: darboğazlar nasıl bulunur

CPU profilleme, hangi yöntemlerin ve iş parçacıklarının işlemciyi yüklediğini ve her çağrının yürütülmesinin ne kadar sürdüğünü izler. Temel amaç, beklenenden daha uzun süre çalışan ve UI iş parçacığını bloke ederek kare düşüşlerine (jank) ve ANR'lere neden olan işlevleri bulmaktır.

Android'de, CPU Profiler bir Yukarıdan Aşağıya ağaç (Top-Down tree) gösterir — belirli bir iş parçacığı bağlamında hangi yöntemin en uzun süre çalıştığını görebileceğiniz bir çağrı ağacı. iOS'ta, Instruments Time Profiler örnekleme temelinde çalışır: düzenli aralıklarla (örneğin, 1 ms), sistem her iş parçacığının çağrı yığınını kaydeder. Örnek istatistikleri, hangi kodun en fazla zamanı tükettiğini belirler.

kotlin
// Örnek: jank'a neden olan yavaş bir yöntem
class UserAdapter : RecyclerView.Adapter<UserViewHolder>() {

    override fun onBindViewHolder(holder: UserViewHolder, position: Int) {
        // ❌ Bu yöntem UI iş parçacığında çağrılır ve işlemeyi engeller
        // Profilleme, decompressImage'ın zamanın %80'ini aldığını gösterecektir
        val user = getItem(position)
        val bitmap = ImageUtils.decompressImage(user.avatar)
        holder.avatarView.setImageBitmap(bitmap)
    }
}

CPU profilleme yaparken, Self Time değeri yüksek yöntemlere dikkat edin — bu, bir yöntemin alt yöntem çağrılarını saymadan kendi işi için harcadığı süredir. UI iş parçacığındaki bir yöntemin Self Time değeri 16 ms'yi aşarsa, 60 FPS ekranda bir kare düşüşü garanti edilir. Çözüm, ağır işlemleri bir arka plan iş parçacığına taşımaktır.

Bellek profilleme: sızıntı arama ve optimizasyon

Bellek profilleme, bir uygulamanın ne kadar bellek kullandığını izler: hangi nesneler oluşturulur, ne kadar yaşar ve ne zaman serbest bırakılır. Temel amaç, sızıntıları (var olmaması gereken ancak bellekte kalan nesneler) ve aşırı tahsisatları (çok sık oluşturulan nesneler) bulmaktır.

Android'de, Memory Profiler gerçek zamanlı RAM tüketim grafiği, tahsis edilmiş tüm nesnelerin listesi ve her tür için ayrıntılar gösterir. Temel metrikler: Java Heap (JVM yığınındaki nesneler), Native Heap (C/C++ düzeyinde tahsisatlar), Graphics Memory (dokular ve GPU tamponları). iOS için, Instruments Allocations benzer metrikler gösterir: Heap Allocations (yığındaki nesneler) ve Anonymous VM (sanal bellek sayfaları).

MetrikAndroid ProfilerInstruments (iOS)
Yığın nesneleriJava Heap + Native HeapHeap Allocations
GrafikGraphics MemoryVM Tracker
SızıntılarMemory Profiler + LeakCanaryLeaks instrument
Yığın dökümüHPROF (Capture)Heapshot

Bellek profilleme yaparken, tipik kullanıcı senaryolarını (ekran açma ve kapama, liste yükleme, görsellerle çalışma) çalıştırdıktan sonra yığın dökümü almak önemlidir. İki dökümün (bir senaryodan önce ve sonra) karşılaştırılması, hangi nesnelerin serbest bırakılmadığını gösterecektir. Activity nesnelerinin sayısı arttıysa ancak ekran kapatıldıysa, bu bir sızıntıdır.

HPROF dökümü nasıl yorumlanır

Android Studio'da, dökümü Memory Profiler üzerinden açın: nesneleri Retained Size'a (ne kadar büyükse, nesne o kadar fazla bellek tutar) göre sıralayın. Bellekte bulunmaması gereken Activity, Fragment ve Bitmap örneklerini arayın. Böyle bir nesne varsa, onu neyin tuttuğunu görmek için Reference Tree'ye gidin.

Ağ profilleme: trafik ve gecikme analizi

Ağ profilleme, uygulamadaki tüm HTTP isteklerini (URL, yanıt boyutu, yürütme süresi, yanıt kodları ve başlıklar) izler. Temel amaç, çok uzun süren, aşırı veri aktaran veya gereksiz yere yapılan istekleri bulmaktır.

Android'de, Network Profiler tüm ağ çağrılarının bir zaman çizelgesini, sürelerini ve aktarılan veri miktarını gösterir. Her istek, tam başlıkları ve yanıt gövdesini görüntülemek için açılabilir. iOS'ta, Instruments Network benzer görevler için URL Yükleme Sistemi izlemeyi kullanır ve isteklerin bir şelale diyagramını gösterir.

Ağ profilleme tarafından belirlenen tipik sorunlar: önbellekleme eksikliği (bir ekran her açıldığında aynı JSON yüklenir), yinelenen istekler (birden çok bileşen aynı anda aynı verileri ister), büyük yanıtlar (sunucu 100 KB gerekirken 5 MB JSON gönderir). Her sorun için standart bir çözüm vardır: OkHttp veya URLSession üzerinden önbellekleme yapılandırma, Combine veya Flow üzerinden abonelikleri birleştirme, sunucu tarafı sayfalama ekleme.

İlk bayta kadar geçen süreye (TTFB) özellikle dikkat edin. İyi bir bağlantıda TTFB 500 ms'yi aşarsa, sorun sunucu tarafındadır. İsteğin kendisi hızlıysa ancak JSON ayrıştırması saniyeler sürüyorsa, sorun serileştirme çözmededir ve ayrıca profillenmelidir.

Enerji profilleme: güç tüketimi analizi

Enerji profilleme, bir uygulamanın pil ömrünü nasıl etkilediğini ölçer. Bu nispeten yeni bir profilleme türüdür ancak mobil uygulamalar için kritik derecede önemlidir — kullanıcılar pili aşırı tüketen uygulamaları siler. Android Studio'daki Energy Profiler ve Instruments'taki Energy Log, her anda hangi işlemlerin (Wi-Fi, GPS, CPU, Bluetooth) enerji tükettiğini gösterir.

Mobil uygulamalardaki başlıca enerji tüketicileri: WakeLock (işlemciyi aktif tutma), GPS Konumu (sürekli konum güncellemeleri), ağ istekleri (özellikle 4G/5G ağlarında), arka plan animasyonları. Energy Profiler, uygulama olaylarını bir enerji tüketim ölçeğine bindirir — grafikte bir ani yükselme varsa, hangi işlemin buna neden olduğunu tam olarak belirleyebilirsiniz.

Apple WWDC 2023'e göre, bir uygulamanın enerji tüketimini %20 azaltmak, kullanıcı tutma oranını %12 artırır, çünkü kullanıcılar pili çok tüketen uygulamaları silme eğilimindedir. Öneri, GPS, arka plan senkronizasyonu ve akış içeren senaryoları test ederken Energy Profiler'ı her zaman etkinleştirmektir.

iOS ve Android için profil oluşturma araçları

Araç seçimi, platforma ve profilleme türüne bağlıdır. Android için ana set Android Studio Profiler (CPU, Bellek, Ağ, Enerji), LeakCanary (bellek sızıntıları) ve Perfetto'dur (sistem düzeyinde profilleme). iOS için — Xcode Instruments şablonlarla: Time Profiler, Allocations, Leaks, Energy Log, Network ve Core Animation.

Flutter ile platformlar arası geliştirme için, Timeline (CPU), Memory, Network ve Debugger modülleriyle DevTools'u kullanın. React Native için — React DevTools ve Facebook'un Flipper'ı (ağ, veritabanı ve UI hiyerarşisi incelemesini destekler). Framework'ten bağımsız olarak, profillemenin temel ilkeleri evrenseldir: optimizasyondan önce ve sonra ölçün, temel çizgiyi kaydedin, her kod değişikliğinde metrikleri karşılaştırın.

Modern yaklaşımlar CI'da otomatik profillemeyi içerir. Android'de, Firebase Test Lab, UI testleriyle birlikte performans ölçümlerini destekler: yalnızca geçme/kalma sonuçları değil, her yineleme için CPU, Bellek ve Ağ grafikleri de alırsınız. iOS için benzer işlevsellik, XCUITest ve Instruments CLI ile GitHub Actions tarafından sağlanır.

Doğru araç nasıl seçilir

Tek bir metriğin hızlı kontrolü için IDE'nin yerleşik profilleyicisini kullanın. Kapsamlı sızıntı analizi için — özel araçlar (LeakCanary, Instruments Leaks). Sistem düzeyinde sürücü profilleme için — Perfetto (Android) veya DTrace (macOS). İki veya üç aracın birleşimi, profilleme senaryolarının %95'ini kapsar.

Sıkça Sorulan Sorular

Profilleme, günlük kaydından (logging) nasıl farklıdır?

Günlük kaydı (logging) olayların sırasını metin biçiminde gösterirken, profilleme nicel metrikler — her kod parçasının ne kadar zaman, bellek, CPU ve ağ tükettiğini sağlar. Profilleme “ne kadar” sorusuna yanıt verirken, günlük kaydı “ne oldu” sorusuna yanıt verir.

Bir uygulamayı ne sıklıkla profillemeliyim?

Her büyük sürümden önce, yeni ağır UI bileşenleri tanıtılırken ve performans şikayetleri ortaya çıktığında profilleme yapılması önerilir. İdeal olarak, profilleme CI'ya entegre edilmiştir ve her pull request ile otomatik olarak çalışır.

Gerçek bir cihazda profilleme yapabilir miyim?

Evet, ve bu bir emülatör kullanmaktan daha da tercih edilir. Gerçek bir cihaz, belirli donanımın sınırlamalarını dikkate alarak gerçek performansı gösterir. Android Studio Profiler ve Xcode Instruments, bağlı bir cihazda herhangi bir kısıtlama olmadan profillemeyi destekler.

Profilleyicinin kendisi ölçüm sonuçlarını etkiler mi?

Evet, herhangi bir profilleyici ek yük ekler. Örnekleme tabanlı CPU profilleme için ek yük %1–5'tir. Yığın dökümleriyle bellek profilleme için, döküm anında %10'a kadar çıkar. Modern araçlar etkiyi en aza indirmeye çalışır, ancak sonuçları yorumlarken her zaman dikkate alınmalıdır.

Profillemede temel çizgi (baseline) nedir?

Temel çizgi (baseline), uygulamanın ilk kararlı sürümünde alınan referans performans metrikleri kümesidir. Her kod değişikliğinde, yeni metrikleri temel çizgiyle karşılaştırın. Temel çizgiye göre başlatma süresi 50 ms arttıysa, değişiklikleri birleştirmeden önce nedeni araştırın.

Özet

  • Profiling, CPU, Bellek, Ağ ve Enerji darboğazlarını belirlemek için mobil uygulama geliştirmenin önemli bir aşamasıdır.
  • CPU profilleme, UI iş parçacığını bloke eden ve kare düşüşlerine ve ANR'lere neden olan yöntemleri bulur.
  • Bellek profilleme, HPROF dökümleri aracılığıyla sızıntıları, yinelemeleri ve optimal olmayan tahsisatları tespit eder.
  • Ağ profilleme, yavaş, yinelenen istekleri ve önbellekleme eksikliğini belirler.
  • Enerji profilleme, GPS, WakeLock ve ağ işlemleri aracılığıyla uygulamanın pil üzerindeki etkisini izler.
  • Android için Android Studio Profiler + LeakCanary kullanın; iOS için Xcode Instruments kullanın.
  • Profillemeyi CI/CD'ye entegre edin ve her sürüm için her zaman metrik temel çizgisini kaydedin.

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun