调度器性能测试¶
zerodep scheduler 与 APScheduler、croniter 和 schedule 的性能对比。
测试环境
- CPU: x86_64 Linux
- Python: 3.12
- 工具: pytest-benchmark 5.2.3(报告均值)
- 对标库: APScheduler 3.11.2, schedule 1.2.2, croniter 6.2.2
- 最后更新: 2026-04-21
实现对比¶
| 实现 | 文件/包 | 说明 |
|---|---|---|
| zerodep | scheduler.py |
仅依赖标准库的进程内调度器 |
| APScheduler | (参考库) | 全功能调度库 |
| croniter | (参考库) | Cron 表达式解析与迭代 |
| schedule | (参考库) | 轻量级进程内调度 |
性能对比(均值)¶
| 测试项 | zerodep | croniter | APScheduler | schedule | 倍数 |
|---|---|---|---|---|---|
| Cron 解析(5 条表达式) | 43.9 μs | -- | 182.8 μs | 不适用 | 快 4.2x |
| 下次触发时间(5 条表达式) | 53.2 μs | -- | 132.6 μs | 不适用 | 快 2.5x |
| 批量下次触发(100 次迭代) | 678.6 μs | -- | 974.8 μs | 不适用 | 快 1.4x |
| 任务添加开销(100 个任务) | 530.9 μs | 不适用 | 不适用 | 561.5 μs | 持平 |
要点总结¶
- Cron 解析比 APScheduler 快 4.2 倍,得益于精简的集合式解析器。
- 下次触发时间计算快 2.5 倍,zerodep 使用直接的 datetime 算术,无需时区转换开销。
- 批量计算(100 次连续触发时间)在规模化场景下仍保持速度优势(快 1.4 倍)。
- 任务添加开销与
schedule相当(持平),两者都采用轻量设计。 - zerodep 无需任何 pip 依赖——仅使用标准库
threading、asyncio、datetime、inspect和logging。
自行运行¶
pip install pytest pytest-benchmark APScheduler croniter schedule
pytest scheduler/test_scheduler_benchmark.py --benchmark-only -v
最新 CI 结果¶
每次发版时通过 Benchmark CI 自动更新。