Prestandaoptimering med GitHub Copilot

Mjukvaruutveckling med GitHub Copilot

Thalia Barrera

AI Engineering Curriculum Manager, DataCamp

Den tysta nedgången

 

nanobanana: half: En delad illustration som kontrasterar en snabb, responsiv applikation – symboliserad av en raket som lyfter – mot en långsam, snurrande laddningsindikator, platt vektorstil

 

Prestandaproblem:

  • Syns inte i enhetstester
  • Orsakar inga omedelbara krascher

 

📈 Koden ser korrekt ut men skalar inte

Mjukvaruutveckling med GitHub Copilot

En flaskhals i verkligheten

 

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

 

  • Koden fungerar bra för små datamängder
  • 1 miljon element → 1 biljon jämförelser
  • $O(n^2)$ algoritm!

 

❌ Slår ut produktionsmiljön på en intensiv dag

Mjukvaruutveckling med GitHub Copilot

[screencast]

Mjukvaruutveckling med GitHub Copilot

[screencast]

Mjukvaruutveckling med GitHub Copilot

Ange vad Copilot ska optimera

nanobanana: half: En prestandadashboard med hastighetsmätare och måttgauger som visar olika optimeringsparametrar, platt vektorillustration mot en ren bakgrund

 

  • Hastighet → snabbare algoritmer, caching, batchning
  • Minne → resursrensning, strömning, generatorer
  • Båda → fullständig prestandagenomgång
Mjukvaruutveckling med GitHub Copilot

Prestandapromptar som fungerar

 

Riktad optimering

Optimize #selection for performance and reduce time complexity

Review #selection for memory leaks

 

Genomsökning av hela kodbasen

@workspace find functions with nested loops over large collections

Mjukvaruutveckling med GitHub Copilot

[screencast]

Mjukvaruutveckling med GitHub Copilot

[screencast]

Mjukvaruutveckling med GitHub Copilot

Bygg in prestanda i varje förslag

 

.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

✅ Förhindrar prestandaflaskhalsar från att skriva sig in i koden

Mjukvaruutveckling med GitHub Copilot

Nu kör vi en övning!

Mjukvaruutveckling med GitHub Copilot

Preparing Video For Download...