CDP 性能测试¶
使用 mock CDP 服务器的 Chrome DevTools Protocol 客户端性能测试。
测试环境
- CPU: x86_64 Linux
- Python: 3.12
- 工具: pytest-benchmark 5.2.3(报告均值)
- 最后更新: 2026-05-02
实现方式¶
| 实现 | 类型 | 描述 |
|---|---|---|
| zerodep cdp | 同步 | 基于 zerodep websocket 构建的 CDP 客户端,仅标准库 |
测试内容¶
CDP 客户端连接到标准库 mock CDP 服务器,该服务器模拟基本的 Chrome DevTools Protocol 交互(Target 管理、Page 导航、Runtime 执行)。性能测试测量端到端 CDP 命令延迟,包括 WebSocket 帧编码、JSON 序列化和事件缓冲。
测试场景¶
| 场景 | 描述 | 操作 |
|---|---|---|
| 完整渲染管线 | create_target → navigate → evaluate(innerText) → close_target | 6+ 条 CDP 命令 |
| HTML 渲染 | create_target → navigate → evaluate(outerHTML) → close_target | 6+ 条 CDP 命令 |
| 多标签页(5 个) | 创建 5 个 target,各自 navigate + evaluate,逐个关闭 | 30+ 条 CDP 命令 |
| JS 执行吞吐 | 在同一 target 上连续 10 次 evaluate() | 10 条 CDP 命令 |
| 命令吞吐 | 快速发送 20 条混合方法的 send_command() | 20 条 CDP 命令 |
关键发现¶
- 完整渲染管线 -- 完整的创建 → 导航 → 执行 → 关闭周期在 mock 服务器上毫秒级完成,展示了低 CDP 客户端开销。
- 多标签页 -- 管理 5 个并发 target(标签页)线性扩展,单标签页开销极小。
- JS 执行 -- 连续 evaluate() 调用显示一致的延迟,验证了高效的命令/响应 ID 匹配和事件缓冲区管理。
- 命令吞吐 -- 原始命令分发速率衡量 JSON 序列化、WebSocket 帧封装和响应关联的开销。
自行运行¶
最新 CI 结果¶
每次发布时通过 Benchmark CI 自动更新。