METABYTE
К списку статей

Erlang: считаем быстрее с counters и atomics

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

11 мая 20261 мин чтения
Erlang: считаем быстрее с counters и atomics

Если вы когда-нибудь пытались считать что-то в Erlang с помощью ETS или процессов, то знаете: это как пытаться измерить скорость интернета на dial-up — медленно и грустно. К счастью, в OTP есть два отличных инструмента: counters и atomics. Они созданы для тех случаев, когда нужно быстро и без блокировок накручивать счётчики.

counters — это массив атомарных счётчиков, которые работают как швейцарские часы: быстро, надёжно и без лишних движений. Они идеальны для сбора метрик в продакшене, когда каждая микросекунда на счету. А atomics — это отдельные атомарные переменные, которые можно читать/писать из любого процесса без синхронизации. Представьте себе, что это как флешка в очереди в магазине — все могут её потрогать, но только один записывает.

Разница между ними проста: counters — для массива счётчиков, atomics — для одного значения. И оба работают в десятки раз быстрее, чем традиционные подходы с ETS или gen_server. Если вы пишете highload-систему на Erlang, эти модули — ваши лучшие друзья. Они спасут вас от ночных деплоев с флагами «фикс производительности».

Комментарий студии METABYTE: В наших проектах мы тоже используем атомарные счётчики для метрик — это как кофеин для кода: бодрит и ускоряет. Если ваш сервис тормозит на ровном месте, возможно, пора заменить ETS на counters.

СЛЕДУЮЩИЙ ШАГ

Понравилось как мыслим?

Применяем те же принципы в клиентских проектах: AI, автоматизации, продукты, которые не умирают после релиза.