CodeBlanks Logo Icon CodeBlanks

Profiling

DevTools profiling öğrenirsin.

DevTools ve profil

DevTools, Dart ve Flutter için resmi profil ve hata ayıklama aracıdır. CPU profil, bellek timeline, ağ ve widget inspector sekmeleri sunar. dart devtools komutuyla açılır; çalışan uygulamaya bağlanır.

Kod içinden profil işareti (marker) eklemek için dart:developer kütüphanesindeki Timeline sınıfı kullanılır. Timeline.startSync('ad') ile bir bölüm başlatılır, Timeline.finishSync() ile kapatılır. Bu bölümler DevTools timeline sekmesinde etiketli bloklar olarak görünür; hangi kodun ne kadar sürdüğünü gösterir. Profil sırasında uygulamayı release modda çalıştırmak daha doğru sonuç verir.

Timeline ile bölüm işaretleme

Timeline.startSync('ad') ile bir profil bölümü başlatılır. Ardından ölçülen kod çalıştırılır. Son olarak Timeline.finishSync() çağrılır. Bölümün adı DevTools timeline'ında görünür; böylece hangi işlemin hangi süreyi kapladığını görürsün.

Örnek: Timeline.startSync('hesap'); var sum = 0; for (var i = 0; i < 100; i++) { sum += i; } Timeline.finishSync();. Burada döngü timeline'da 'hesap' etiketli bir blok olarak görünür. sum (0+1+...+99 = 4950) deterministiktir; bölümün doğru kapandığını doğrulamak için yazdırılabilir. Her startSync için mutlaka bir finishSync olmalıdır.

Uygulama Timeline ile profil

import 'dart:developer' as developer; satırını ekle. main içinde developer.Timeline.startSync('hesap') çağır. var sum = 0; ile bir for döngüsü yaz: i 0'dan 99'a kadar (100 hariç), sum += i. Sonra developer.Timeline.finishSync() çağır. print('Toplam: $sum') ve print('Timeline: hesap') ile yazdır.

Başlangıç kodu

main.dart
// dart:developer kütüphanesini içe aktar

void main() {
  // Timeline.startSync ile bölüm başlat, döngü yap, finishSync ile kapat
  // Toplam ve Timeline bilgisini yazdır
}

Örnek çözüm

main.dart
import 'dart:developer' as developer;

void main() {
  developer.Timeline.startSync('hesap');
  var sum = 0;
  for (var i = 0; i < 100; i++) {
    sum += i;
  }
  developer.Timeline.finishSync();
  print('Toplam: $sum');
  print('Timeline: hesap');
}

Beklenen çıktı

Toplam: 4950
Timeline: hesap

Soru ve cevaplar

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

1 dart:developer içe aktarımı

Soru
import 'dart:____' as developer;
Cevap
import 'dart:developer' as developer;

Açıklama: dart:developer, developer takma adıyla içe aktarılır.

2 Profil parçalarını eşleştir

Kavram Anlamı
Timeline Profil bölümü
startSync Bölüm başı
finishSync Bölüm sonu
dart:developer Kütüphane

3 Timeline.startSync ne yapar?

  • Profil bölümü başlatır Doğru cevap
  • crypto
  • Stopwatch
  • bcrypt

Açıklama: Timeline.startSync bir profil bölümü başlatır.

İleri seviye bölümündeki tüm dersler