การปรับประสิทธิภาพด้วย GitHub Copilot

การพัฒนาซอฟต์แวร์ด้วย GitHub Copilot

Thalia Barrera

AI Engineering Curriculum Manager, DataCamp

ความช้าที่ซ่อนอยู่

 

nanobanana: half: ภาพแบ่งครึ่งเปรียบเทียบแอปที่ตอบสนองเร็วแสดงเป็นจรวดพุ่งขึ้นอย่างราบรื่น กับตัวโหลดที่หมุนช้าอีกด้านหนึ่ง สไตล์ภาพเวกเตอร์แบบแบน

 

ปัญหาด้านประสิทธิภาพ:

  • ไม่ปรากฏใน unit tests
  • ไม่ทำให้ โปรแกรมหยุดทำงานทันที

 

📈 โค้ดดูถูกต้อง แต่ รองรับปริมาณงานจริงไม่ได้

การพัฒนาซอฟต์แวร์ด้วย GitHub Copilot

คอขวดในสภาพแวดล้อมจริง

 

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

 

  • โค้ดทำงานได้ดีกับ ข้อมูลขนาดเล็ก
  • 1 ล้านรายการ → 1 ล้านล้านการเปรียบเทียบ
  • อัลกอริทึม $O(n^2)$

 

ทำให้ระบบ production ล่ม ในช่วงที่งานหนัก

การพัฒนาซอฟต์แวร์ด้วย GitHub Copilot

[screencast]

การพัฒนาซอฟต์แวร์ด้วย GitHub Copilot

[screencast]

การพัฒนาซอฟต์แวร์ด้วย GitHub Copilot

บอก Copilot ว่าต้องการปรับปรุงด้านใด

nanobanana: half: แดชบอร์ดประสิทธิภาพแสดงมาตรวัดความเร็วและตัวชี้วัดการปรับปรุงต่าง ๆ สไตล์ภาพเวกเตอร์แบบแบนบนพื้นหลังสะอาด

 

  • ความเร็ว → อัลกอริทึมที่เร็วขึ้น, caching, batching
  • หน่วยความจำ → คืนทรัพยากร, streaming, generators
  • ทั้งสองด้าน → ตรวจสอบประสิทธิภาพแบบครอบคลุม
การพัฒนาซอฟต์แวร์ด้วย GitHub Copilot

prompt ด้านประสิทธิภาพที่ได้ผล

 

ปรับปรุงแบบเจาะจง

Optimize #selection for performance and reduce time complexity

Review #selection for memory leaks

 

สแกนทั้ง codebase

@workspace find functions with nested loops over large collections

การพัฒนาซอฟต์แวร์ด้วย 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...