Производительность
Замеры сделаны на Intel Core i7-12700, Ubuntu 24.04, Python 3.11. Каждый бенчмарк запускался 20 раз, в таблице — медиана.
Результаты
Одна операция на одном потоке, данные заранее прогреты.
| Операция | Время | Аллокации | Память |
|---|---|---|---|
run | 108 нс | 0 | 0 Б |
attempts | 277 нс | 2 | 160 Б |
permanent | 439 нс | 1 | 48 Б |
budget_left | 204 нс | 1 | 16 Б |
Под нагрузкой
На многоядерных машинах операции почти не конкурируют между собой, поэтому задержки под нагрузкой близки к однопоточным.
Как воспроизвести
Бенчмарки лежат в репозитории. Запуск:
pytest benchmarks/ --benchmark-only
Советы
- Создавайте
Policyодин раз и переиспользуйте его. - Не включайте отладочный вывод в продакшене.
- Сначала измерьте: чаще всего время уходит не туда, куда кажется.