Содержание
Бенчмарки
Замеры сделаны на AMD Ryzen 9 7950X, Fedora 41, Go 1.21. Каждый бенчмарк запускался 20 раз, в таблице — медиана.
Результаты
Одна операция на одном потоке, данные заранее прогреты.
| Операция | Время | Аллокации | Память |
|---|---|---|---|
Validate | 144 нс | 0 | 0 Б |
IsValid | 396 нс | 0 | 0 Б |
Field | 578 нс | 1 | 32 Б |
Fields | 721 нс | 1 | 48 Б |
Под нагрузкой
При 32 параллельных потоках пропускная способность растёт почти линейно: узкое место — не cinderguard, а сам код вокруг.
Как воспроизвести
Бенчмарки лежат в репозитории. Запуск:
go test -run=^$ -bench=. -benchmem -count=20 ./...
Советы
- Создавайте
Validatorодин раз и переиспользуйте его. - Сначала измерьте: чаще всего время уходит не туда, куда кажется.
- Следите за аллокациями на горячем пути вашего кода.