Erlang: считаем быстрее с counters и atomics
Как ускорить счётчики в Erlang без боли — рассказываем с юмором и примерами.

Если вы когда-нибудь пытались считать что-то в Erlang с помощью ETS или процессов, то знаете: это как пытаться измерить скорость интернета на dial-up — медленно и грустно. К счастью, в OTP есть два отличных инструмента: counters и atomics. Они созданы для тех случаев, когда нужно быстро и без блокировок накручивать счётчики.
counters — это массив атомарных счётчиков, которые работают как швейцарские часы: быстро, надёжно и без лишних движений. Они идеальны для сбора метрик в продакшене, когда каждая микросекунда на счету. А atomics — это отдельные атомарные переменные, которые можно читать/писать из любого процесса без синхронизации. Представьте себе, что это как флешка в очереди в магазине — все могут её потрогать, но только один записывает.
Разница между ними проста: counters — для массива счётчиков, atomics — для одного значения. И оба работают в десятки раз быстрее, чем традиционные подходы с ETS или gen_server. Если вы пишете highload-систему на Erlang, эти модули — ваши лучшие друзья. Они спасут вас от ночных деплоев с флагами «фикс производительности».
Комментарий студии METABYTE: В наших проектах мы тоже используем атомарные счётчики для метрик — это как кофеин для кода: бодрит и ускоряет. Если ваш сервис тормозит на ровном месте, возможно, пора заменить ETS на counters.
СЛЕДУЮЩИЙ ШАГ
Понравилось как мыслим?
Применяем те же принципы в клиентских проектах: AI, автоматизации, продукты, которые не умирают после релиза.