GitHub Copilot로 성능 최적화

GitHub Copilot을 활용한 소프트웨어 개발

Thalia Barrera

AI Engineering Curriculum Manager, DataCamp

눈에 띄지 않는 성능 저하

 

nanobanana: half: 빠른 반응형 애플리케이션(부드럽게 발사되는 로켓)과 느린 로딩 표시기를 대비한 분할 일러스트, 플랫 벡터 스타일

 

성능 문제:

  • 단위 테스트에서 발견되지 않음
  • 즉각적인 충돌을 일으키지 않음

 

📈 코드가 올바르게 보여도 확장되지 않음

GitHub Copilot을 활용한 소프트웨어 개발

실제 환경의 병목 사례

 

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

 

  • 소규모 입력에서는 정상 작동
  • 항목 100만 개 → 1조 번 비교
  • $O(n^2)$ 알고리즘!

 

❌ 바쁜 날 프로덕션 장애 유발

GitHub Copilot을 활용한 소프트웨어 개발

[screencast]

GitHub Copilot을 활용한 소프트웨어 개발

[screencast]

GitHub Copilot을 활용한 소프트웨어 개발

Copilot에게 최적화 목표 지정하기

nanobanana: half: 다양한 최적화 지표를 보여주는 속도계 다이얼과 게이지가 있는 성능 대시보드, 깔끔한 배경의 플랫 벡터 일러스트

 

  • 속도 → 더 빠른 알고리즘, 캐싱, 배치 처리
  • 메모리 → 리소스 정리, 스트리밍, 제너레이터
  • 둘 다 → 전체 성능 검토
GitHub Copilot을 활용한 소프트웨어 개발

효과적인 성능 프롬프트

 

대상 지정 최적화

#selection의 성능을 최적화하고 시간 복잡도를 줄이세요

#selection의 메모리 누수를 검토하세요

 

코드베이스 전체 검사

@workspace 대용량 컬렉션에 중첩 루프가 있는 함수를 찾으세요

GitHub Copilot을 활용한 소프트웨어 개발

[screencast]

GitHub Copilot을 활용한 소프트웨어 개발

[screencast]

GitHub Copilot을 활용한 소프트웨어 개발

모든 제안에 성능 기준 적용하기

 

.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

✅ 코드에 성능 병목 발생을 사전에 방지

GitHub Copilot을 활용한 소프트웨어 개발

실습해 봅시다!

GitHub Copilot을 활용한 소프트웨어 개발

Preparing Video For Download...