Как стать автором
Обновить

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

Время на прочтение1 мин
Количество просмотров22K

Правильное использование структур данных поможет оптимизировать скорость/память кода. В больших продуктах каждая оптимизация умножается на миллионы/миллиарды сессий пользователей. Так я сэкономил компании $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

Теги:
Хабы:
Всего голосов 115: ↑4 и ↓111-106
Комментарии59

Публикации

Истории

Работа

iOS разработчик
23 вакансии
Swift разработчик
26 вакансий

Ближайшие события

19 сентября
CDI Conf 2024
Москва
24 сентября
Конференция Fin.Bot 2024
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн