Ottimizzare le prestazioni con GitHub Copilot

Sviluppo software con GitHub Copilot

Thalia Barrera

AI Engineering Curriculum Manager, DataCamp

Il rallentamento silenzioso

 

nanobanana: half: Un’illustrazione divisa che confronta un’app veloce e reattiva, mostrata come un razzo che decolla, e un indicatore di caricamento lento dall’altro lato, stile vettoriale piatto

 

Problemi di performance:

  • Non emergono nei test unitari
  • Non causano crash immediati

 

📈 Il codice sembra corretto, ma non scala

Sviluppo software con GitHub Copilot

Un collo di bottiglia reale

 

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

 

  • Il codice va bene con input piccoli
  • 1 milione di elementi → 1 trilione di confronti
  • Algoritmo $O(n^2)$!

 

❌ Manda in crisi la produzione in una giornata intensa

Sviluppo software con GitHub Copilot

[screencast]

Sviluppo software con GitHub Copilot

[screencast]

Sviluppo software con GitHub Copilot

Di’ a Copilot cosa ottimizzare

nanobanana: half: Una dashboard prestazionale con tachimetri e indicatori che mostrano diversi segnali di ottimizzazione, illustrazione vettoriale su sfondo pulito

 

  • Velocità → algoritmi più rapidi, caching, batching
  • Memoria → rilascio risorse, streaming, generatori
  • Entrambe → revisione completa delle prestazioni
Sviluppo software con GitHub Copilot

Prompt di performance che funzionano

 

Ottimizzazione mirata

Ottimizza #selection per le prestazioni e riduci la complessità temporale

Controlla #selection per perdite di memoria

 

Scansione dell’intero codebase

@workspace trova funzioni con cicli annidati su collezioni grandi

Sviluppo software con GitHub Copilot

[screencast]

Sviluppo software con GitHub Copilot

[screencast]

Sviluppo software con GitHub Copilot

Integra la performance in ogni suggerimento

 

.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

✅ Evita colli di bottiglia già in fase di scrittura del codice

Sviluppo software con GitHub Copilot

Ayo berlatih!

Sviluppo software con GitHub Copilot

Preparing Video For Download...