使用 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 进行软件开发

[录屏]

使用 GitHub Copilot 进行软件开发

[录屏]

使用 GitHub Copilot 进行软件开发

告诉 Copilot 优化目标

nanobanana: half: 一个性能仪表盘,带有速度表盘和指标仪表,显示不同的优化指标,干净背景的扁平矢量插图

 

  • 速度 → 更快算法、缓存、批处理
  • 内存 → 资源清理、流式处理、生成器
  • 两者 → 全面性能审查
使用 GitHub Copilot 进行软件开发

有效的性能提示语

 

定向优化

Optimize #selection for performance and reduce time complexity

Review #selection for memory leaks

 

全库扫描

@workspace find functions with nested loops over large collections

使用 GitHub Copilot 进行软件开发

[录屏]

使用 GitHub Copilot 进行软件开发

[录屏]

使用 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...