Optimización de rendimiento con GitHub Copilot

Desarrollo de software con GitHub Copilot

Thalia Barrera

AI Engineering Curriculum Manager, DataCamp

La desaceleración silenciosa

 

nanobanana: half: Una ilustración dividida que contrasta una app rápida y responsiva como un cohete despegando y, al otro lado, un indicador de carga girando, estilo vectorial plano

 

Problemas de rendimiento:

  • No aparecen en tests unitarios
  • No causan fallos inmediatos

 

📈 El código parece correcto, pero no escala

Desarrollo de software con GitHub Copilot

Un cuello de botella en la práctica

 

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

 

  • Funciona bien con entradas pequeñas
  • 1 millón de elementos → 1 billón de comparaciones
  • ¡Algoritmo $O(n^2)$!

 

❌ Tira producción en un día con mucha carga

Desarrollo de software con GitHub Copilot

[screencast]

Desarrollo de software con GitHub Copilot

[screencast]

Desarrollo de software con GitHub Copilot

Dile a Copilot qué optimizar

nanobanana: half: Un panel de rendimiento con velocímetros y medidores mostrando indicadores de optimización, ilustración vectorial sobre fondo limpio

 

  • Velocidad → algoritmos más rápidos, caché, batching
  • Memoria → liberar recursos, streaming, generadores
  • Ambos → revisión completa de rendimiento
Desarrollo de software con GitHub Copilot

Prompts de rendimiento que funcionan

 

Optimización focalizada

Optimiza #selection para rendimiento y reduce la complejidad temporal

Revisa #selection por fugas de memoria

 

Escaneo de todo el código

@workspace encuentra funciones con bucles anidados sobre colecciones grandes

Desarrollo de software con GitHub Copilot

[screencast]

Desarrollo de software con GitHub Copilot

[screencast]

Desarrollo de software con GitHub Copilot

Integra rendimiento en cada sugerencia

 

.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 cuellos de botella al escribir código

Desarrollo de software con GitHub Copilot

¡Vamos a practicar!

Desarrollo de software con GitHub Copilot

Preparing Video For Download...