Config 性能测试¶
zerodep config 与 python-decouple 的同场景性能对比。
测试环境
- CPU: x86_64 Linux
- Python: 3.12
- 工具: pytest-benchmark 5.2.3(报告均值)
- 对标库: python-decouple 3.8
- 最后更新: 2026-04-21
实现¶
| 实现 | 文件/包 | 说明 |
|---|---|---|
| zerodep | config.py |
仅标准库的统一配置加载器 |
| python-decouple | (参考库) | 流行的 12-factor 配置库 |
测试项目¶
| 测试 | 说明 |
|---|---|
| 环境变量查找 | 从 os.environ 查找单个键 |
| Dotenv 查找 | 从预加载的 .env 文件(50 条)中查找键 |
| 整型转换 | 环境变量查找 + cast=int |
| 布尔转换 | 环境变量查找 + cast=bool |
| CSV | 环境变量查找 + cast=Csv() |
性能对比(均值)¶
| 测试 | zerodep | python-decouple | 加速比 |
|---|---|---|---|
| 环境变量查找 | 0.9 μs | 1.7 μs | 快 1.9 倍 |
| Dotenv 查找 | 0.7 μs | 1.6 μs | 快 2.2 倍 |
| 整型转换 | 1.2 μs | 2.2 μs | 快 1.8 倍 |
| 布尔转换 | 1.3 μs | 2.5 μs | 快 1.9 倍 |
| CSV | 2.7 μs | 12.3 μs | 快 4.6 倍 |
附加基准测试(仅 zerodep)¶
| 测试 | 均值 | 说明 |
|---|---|---|
| 嵌套 JSON 查找 | 1.7 μs | 从 JSON 配置文件中查找嵌套键 |
| Config 初始化(仅环境变量) | 0.5 μs | 不加载文件构造 Config() |
| Config 初始化(含 JSON) | 38.9 μs | 加载 JSON 配置文件构造 Config() |
| Config 初始化(含 .env) | 759.8 μs | 加载 .env 文件(50 条)构造 Config() |
要点总结¶
- 一致更快 -- zerodep config 在所有可比操作中比 python-decouple 快 1.8 到 4.6 倍。
- CSV 解析优势 -- 最大加速比(4.6 倍)出现在 CSV 转换中,zerodep 更简洁的实现避免了 python-decouple 的额外开销。
- 轻量初始化 -- 不加载文件的
Config构造仅需约 0.5 μs;JSON 配置加载增加约 39 μs,.env 加载约 760 μs。 - 额外功能零开销 -- zerodep 在保持更好性能的同时,增加了配置文件支持(JSON/YAML/TOML/INI)、嵌套键和前缀支持。
自行运行¶
pip install pytest pytest-benchmark python-decouple
pytest config/test_config_benchmark.py --benchmark-only -v
最新 CI 结果¶
每次发版时通过 Benchmark CI 自动更新。