Optimizarea performanței cu GitHub Copilot

Dezvoltare software cu GitHub Copilot

Thalia Barrera

AI Engineering Curriculum Manager, DataCamp

Încetinirea silențioasă

 

nanobanana: half: O ilustrație împărțită care contrastează o aplicație rapidă reprezentată ca o rachetă lansată pe o parte și un indicator de încărcare lent pe cealaltă, stil vectorial plat

 

Probleme de performanță:

  • Nu apar în testele unitare
  • Nu provoacă erori imediate

 

📈 Codul pare corect, dar nu scalează

Dezvoltare software cu GitHub Copilot

Un blocaj în practică

 

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

 

  • Codul funcționează bine pentru intrări mici
  • 1 milion de elemente → 1 trilion de comparații
  • Algoritm $O(n^2)$!

 

Blochează producția într-o zi aglomerată

Dezvoltare software cu GitHub Copilot

[screencast]

Dezvoltare software cu GitHub Copilot

[screencast]

Dezvoltare software cu GitHub Copilot

Specificați obiectivul de optimizare pentru Copilot

nanobanana: half: Un tablou de bord de performanță cu cadrane și indicatori de metrici care arată diferiți indicatori de optimizare, ilustrație vectorială plată pe fundal curat

 

  • Viteză → algoritmi mai rapizi, caching, batching
  • Memorie → eliberare resurse, streaming, generatoare
  • Ambele → revizuire completă a performanței
Dezvoltare software cu GitHub Copilot

Prompturi eficiente pentru performanță

 

Optimizare țintită

Optimizați #selection pentru performanță și reduceți complexitatea temporală

Verificați #selection pentru scurgeri de memorie

 

Scanare la nivel de bază de cod

@workspace găsiți funcții cu bucle imbricate peste colecții mari

Dezvoltare software cu GitHub Copilot

[screencast]

Dezvoltare software cu GitHub Copilot

[screencast]

Dezvoltare software cu GitHub Copilot

Integrați performanța în fiecare sugestie

 

.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

Previne blocajele de performanță din cod

Dezvoltare software cu GitHub Copilot

Să exersăm!

Dezvoltare software cu GitHub Copilot

Preparing Video For Download...