Optymalizacja wydajności z GitHub Copilot

Programowanie z GitHub Copilot

Thalia Barrera

AI Engineering Curriculum Manager, DataCamp

Ukryte spowolnienie

 

nanobanana: half: Podzielona ilustracja kontrastująca szybką, responsywną aplikację przedstawioną jako rakieta startująca płynnie po jednej stronie i wolno kręcący się wskaźnik ładowania po drugiej, płaski styl wektorowy

 

Problemy z wydajnością:

  • Nie pojawiają się w testach jednostkowych
  • Nie powodują natychmiastowych awarii

 

📈 Kod wygląda poprawnie, ale nie skaluje się

Programowanie z GitHub Copilot

Wąskie gardło w praktyce

 

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

 

  • Kod działa poprawnie dla małych danych wejściowych
  • 1 milion elementów → 1 bilion porównań
  • Algorytm $O(n^2)$!

 

Paraliżuje produkcję w szczytowym obciążeniu

Programowanie z GitHub Copilot

[screencast]

Programowanie z GitHub Copilot

[screencast]

Programowanie z GitHub Copilot

Wskaż Copilotowi cel optymalizacji

nanobanana: half: Pulpit wydajności ze wskaźnikami prędkościomierza i miernikami metryk pokazującymi różne wskaźniki optymalizacji, płaska ilustracja wektorowa na czystym tle

 

  • Szybkość → szybsze algorytmy, cache, batching
  • Pamięć → zwalnianie zasobów, streaming, generatory
  • Oba → pełny przegląd wydajności
Programowanie z GitHub Copilot

Skuteczne polecenia optymalizacji

 

Optymalizacja ukierunkowana

Zoptymalizuj #selection pod kątem wydajności i zmniejsz złożoność czasową

Sprawdź #selection pod kątem wycieków pamięci

 

Skanowanie całej bazy kodu

@workspace znajdź funkcje z zagnieżdżonymi pętlami na dużych kolekcjach

Programowanie z GitHub Copilot

[screencast]

Programowanie z GitHub Copilot

[screencast]

Programowanie z GitHub Copilot

Wbuduj wydajność w każdą sugestię

 

.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

Zapobiega powstawaniu wąskich gardeł wydajności w kodzie

Programowanie z GitHub Copilot

Czas na ćwiczenia!

Programowanie z GitHub Copilot

Preparing Video For Download...