Profiling
- Dart kursu
- İleri seviye
- Ders 77/83
- 5 dk
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
// 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
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ı
import 'dart:____' as developer;
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.