Pull to refresh

Почему программистам нужно знать структуры данных и как я сэкономил компании $22 000 в год

Reading time1 min
Views22K

Правильное использование структур данных поможет оптимизировать скорость/память кода. В больших продуктах каждая оптимизация умножается на миллионы/миллиарды сессий пользователей. Так я сэкономил компании $22 000 в год используя базовые знания структуры данных Set.

Проблема

Часто используемый скрин приложения отправлял impression аналитику при прокрутке экрана с дублированием. Например если вы видели на экране “XYZ” 10 раз прокрутив контент вверх вниз несколько раз, то аналитика отправлялась 10 раз.

Я поговорил с нашими аналитиками и они сказали что им достаточно 1 раза отправки данного события. Они добавили что делают дедупликацию этих событий на своей стороне.

Решение

Я добавил дедупликацию аналитики перед отправкой. Ниже упрощенный псевдо код:

// Было
logAnalytics(for: uuid)

// Стало
let uuids = Set<String>()
...
if uuids.insert(uuid).inserted {
    logAnalytics(for: uuid)
}

Результат

На графике ниже показан объём аналитики для конкретного события. С момента выпуска оптимизированного кода (красная стрелка) видно падение в количестве событий. Новый код сократил расходы на аналитику этого события на $22 000 в год.

Падение в конце графика это не очередная оптимизация. Сервер тоже не падал. Данные аналитики поступают с задержкой. Поэтому новые события еще не поступили.

Вывод

Знание структур данных поможет оптимизировать код. Чем больше продукт, тем больше эффект оптимизации.


Спасибо за прочтение чернового варианта статьи Азизбеку Матчанову, Айгуль Джуманазаровой, Муслимбеку Абдуганиеву.

Обо мне

Меня зовут Дархонбек. Автор ИТ блога 10x Engineer. Я работаю iOS разработчиком в Сан Франциско в компании Uber.

Связаться со мной можно по почте: darkhonbek.interview@gmail.com

Tags:
Hubs:
Total votes 116: ↑5 and ↓111-106
Comments59

Articles