Otimização de performance com o GitHub Copilot

Desenvolvimento de Software com GitHub Copilot

Thalia Barrera

AI Engineering Curriculum Manager, DataCamp

A desaceleração silenciosa

 

nanobanana: half: Uma ilustração dividida contrastando um app rápido e responsivo como um foguete decolando de um lado e um ícone de carregamento lento do outro, estilo vetorial

 

Problemas de performance:

  • Não aparecem em testes unitários
  • Não causam crashes imediatos

 

📈 O código parece correto, mas não escala

Desenvolvimento de Software com GitHub Copilot

Um gargalo no mundo real

 

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

 

  • Código funciona bem para entradas pequenas
  • 1 milhão de itens → 1 trilhão de comparações
  • Algoritmo $O(n^2)$!

 

❌ Derruba a produção num dia de pico

Desenvolvimento de Software com GitHub Copilot

[screencast]

Desenvolvimento de Software com GitHub Copilot

[screencast]

Desenvolvimento de Software com GitHub Copilot

Diga ao Copilot o que otimizar

nanobanana: half: Um dashboard de performance com velocímetros e medidores mostrando diferentes indicadores de otimização, ilustração vetorial em fundo limpo

 

  • Velocidade → algoritmos mais rápidos, cache, batching
  • Memória → limpeza de recursos, streaming, generators
  • Ambos → revisão completa de performance
Desenvolvimento de Software com GitHub Copilot

Prompts de performance que funcionam

 

Otimização focada

Otimize #selection para performance e reduza a complexidade de tempo

Revise #selection para vazamentos de memória

 

Varredura no codebase

@workspace encontre funções com loops aninhados sobre coleções grandes

Desenvolvimento de Software com GitHub Copilot

[screencast]

Desenvolvimento de Software com GitHub Copilot

[screencast]

Desenvolvimento de Software com GitHub Copilot

Incorpore performance em cada sugestão

 

.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 gargalos de performance de entrarem no código

Desenvolvimento de Software com GitHub Copilot

Vamos praticar!

Desenvolvimento de Software com GitHub Copilot

Preparing Video For Download...