GitHub Copilot ile performans optimizasyonu

GitHub Copilot ile Yazılım Geliştirme

Thalia Barrera

AI Engineering Curriculum Manager, DataCamp

Sessiz yavaşlama

 

nanobanana: half: Bir tarafta pürüzsüz bir roket fırlatışıyla hızlı, duyarlı bir uygulama; diğer tarafta yavaş dönen yükleme göstergesiyle yavaş bir uygulamayı karşılaştıran bölünmüş illüstrasyon, düz vektör stilinde

 

Performans sorunları:

  • Birim testlerinde ortaya çıkmaz
  • Anında çökme yaratmaz

 

📈 Kod doğru görünebilir ama ölçeklenmez

GitHub Copilot ile Yazılım Geliştirme

Doğada bir darboğaz

 

def find_common(list1, list2):
    common = []
    for item in list1:
        for item2 in list2:
            if item == item2:
                common.append(item)
    return common

 

  • Kod küçük girdilerde çalışır
  • 1 milyon öğe → 1 trilyon karşılaştırma
  • $O(n^2)$ algoritma!

 

❌ Yoğun bir günde üretimi çökertir

GitHub Copilot ile Yazılım Geliştirme

[ekran kaydı]

GitHub Copilot ile Yazılım Geliştirme

[ekran kaydı]

GitHub Copilot ile Yazılım Geliştirme

Copilot’a neyi optimize edeceğini söyleyin

nanobanana: half: Hız göstergeleri ve metrik sayaçlarıyla çeşitli optimizasyon göstergelerini gösteren bir performans panosu, temiz bir arka planda düz vektör illüstrasyon

 

  • Hız → daha hızlı algoritmalar, önbellekleme, toplu işleme
  • Bellek → kaynak temizliği, akış, jeneratörler
  • Her ikisi → kapsamlı performans incelemesi
GitHub Copilot ile Yazılım Geliştirme

İşe yarayan performans istemleri

 

Hedefe yönelik optimizasyon

#selection için performans optimizasyonu yapın ve zaman karmaşıklığını azaltın

#selection için bellek sızıntılarını inceleyin

 

Kod tabanı genelinde tarama

@workspace büyük koleksiyonlar üzerinde iç içe döngü kullanan fonksiyonları bulun

GitHub Copilot ile Yazılım Geliştirme

[ekran kaydı]

GitHub Copilot ile Yazılım Geliştirme

[ekran kaydı]

GitHub Copilot ile Yazılım Geliştirme

Her öneriye performansı yerleştirin

 

.github/copilot-instructions.md

## Performance standards
- Prefer set or dict lookups over nested loops
- Use context managers for files, connections, and sockets
- Avoid loading entire datasets into memory, use generators or streaming

✅ Kodda performans darboğazlarının yazılmasını önler

GitHub Copilot ile Yazılım Geliştirme

Haydi pratik yapalım!

GitHub Copilot ile Yazılım Geliştirme

Preparing Video For Download...