Prestatie-optimalisatie met GitHub Copilot

Softwareontwikkeling met GitHub Copilot

Thalia Barrera

AI Engineering Curriculum Manager, DataCamp

De stille vertraging

 

nanobanana: half: Een split-illustratie met links een snelle, responsieve app als een soepel gelanceerde raket en rechts een trage draaiende laadindicator, platte vectorstijl

 

Prestatieproblemen:

  • Zie je niet in unittests
  • Veroorzaken geen directe crashes

 

📈 Code lijkt goed, maar schaalt niet

Softwareontwikkeling met GitHub Copilot

Een bottleneck in het wild

 

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

 

  • Code werkt prima voor kleine inputs
  • 1 miljoen items → 1 biljoen vergelijkingen
  • $O(n^2)$-algoritme!

 

❌ Legt productie plat op een drukke dag

Softwareontwikkeling met GitHub Copilot

[screencast]

Softwareontwikkeling met GitHub Copilot

[screencast]

Softwareontwikkeling met GitHub Copilot

Vertel Copilot waarop te optimaliseren

nanobanana: half: Een prestatiedashboard met snelheidsmeters en gauges die verschillende optimalisatie-indicatoren tonen, platte vectorillustratie op een schone achtergrond

 

  • Snelheid → snellere algoritmen, caching, batchen
  • Geheugen → resources opruimen, streaming, generators
  • Beide → volledige prestatierapportage
Softwareontwikkeling met GitHub Copilot

Effectieve performance-prompts

 

Gerichte optimalisatie

Optimaliseer #selection voor performance en verlaag de tijdcomplexiteit

Controleer #selection op geheugenlekken

 

Scan van hele codebase

@workspace zoek functies met geneste lussen over grote collecties

Softwareontwikkeling met GitHub Copilot

[screencast]

Softwareontwikkeling met GitHub Copilot

[screencast]

Softwareontwikkeling met GitHub Copilot

Borg performance in elke suggestie

 

.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

✅ Voorkomt performance-knelpunten in je code

Softwareontwikkeling met GitHub Copilot

Laten we oefenen!

Softwareontwikkeling met GitHub Copilot

Preparing Video For Download...