CodeBlanks Logo Icon CodeBlanks

Özet - Performans

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

main.dart
// 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

main.dart
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

Soru
print('Stopwatch: ${sw.____}');
Cevap
print('Stopwatch: ${sw.isRunning}');

Açıklama: sw.isRunning Stopwatch'ın çalışma durumunu verir.

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