Özet - Performans
- Dart kursu
- İleri seviye
- Ders 78/83
- 5 dk
benchmark, Stopwatch ve profiling'i birleştirerek bir perf aracı yazarsın.
Özet - Performans
Bu grupta Dart ile performans araçlarını öğrendik. benchmark kod hızını ölçer; Stopwatch yerleşik süre ölçerdir; ProcessInfo bellek kullanımını verir; önbellekleme (memoization) tekrarlı hesabı hızlandırır; DevTools ve Timeline profil çıkarmak için kullanılır.
Bu özette Stopwatch ve önbellekli fib fonksiyonunu bir araya getiren küçük bir program yazacağız. Program bir Stopwatch başlatır, önbellekli fib(20) hesaplar, Stopwatch durdurur ve sonuçu yazdırır. Bu, bir uygulamanın performans katmanının küçük örneğidir: ölçüm + optimizasyon bir arada.
Uygulama Stopwatch + memoized fib
final cache = <int, int>{}; haritasını tanımla (main dışında). int fib(int n) fonksiyonunu yaz: n < 2 ise n döndür; cache.containsKey(n) ise cache[n]! döndür; değilse fib(n-1) + fib(n-2) hesapla, sakla, döndür. main içinde final sw = Stopwatch()..start(); ile başlat, final result = fib(20); çağır, sw.stop(); yap. print('fib(20): $result') ve print('Stopwatch: ${sw.isRunning}') ile yazdır.
Başlangıç kodu
// cache haritasını ve fib fonksiyonunu tanımla
void main() {
// Stopwatch ile fib(20) hesapla, sonuçu ve Stopwatch durumunu yazdır
}Örnek çözüm
final cache = <int, int>{};
int fib(int n) {
if (n < 2) return n;
if (cache.containsKey(n)) return cache[n]!;
final r = fib(n - 1) + fib(n - 2);
cache[n] = r;
return r;
}
void main() {
final sw = Stopwatch()..start();
final result = fib(20);
sw.stop();
print('fib(20): $result');
print('Stopwatch: ${sw.isRunning}');
}Beklenen çıktı
fib(20): 6765 Stopwatch: false
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Süre ölçen sınıf hangisi?
- AES
- Stopwatch Doğru cevap
- Hmac
- bcrypt
Açıklama: Stopwatch süre (zaman) ölçer.
2 Performans araçlarını eşleştir
| Kavram | Anlamı |
|---|---|
Stopwatch |
Süre |
fib |
Fibonacci |
cache |
Önbellek |
Timeline |
Profil |
3 Stopwatch durumu
print('Stopwatch: ${sw.____}');
print('Stopwatch: ${sw.isRunning}');
Açıklama: sw.isRunning Stopwatch'ın çalışma durumunu verir.