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

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

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

Проблема

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

Решение

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

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

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

Результат

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

Вывод

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


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

Обо мне

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

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

Источник: https://habr.com/ru/post/664054/


Интересные статьи

Интересные статьи

Меня зовут Михаил Правдин, я руковожу отделом исследований в Авито. Моя команда изучает пользовательский опыт, чтобы клиенты получали от продуктов только приятные впечатления. В этой статье расскажу, ...
За учебной платформой и курсами Слёрма скрываются живые люди. Они радуются и злятся, заряжаются и устают, язвят и подбадривают. Ещё они любят свою работу. Мы запускаем проект «Слёрм в лицах», чтобы ра...
Привет! Меня зовут Леонид, я DevOps-инженер в компании KTS. В этой статье я рассмотрю различные оркестраторы и объясню, почему Kubernetes — лучший выбор.Нашей компании уже 6 лет, и 4 из них мы жи...
Введение Amplitude как инструмент продуктовой аналитики очень хорошо зарекомендовал себя благодаря несложной настройке событий и гибкости визуализаций. И нередко возникает потребност...
От скорости сайта зависит многое: количество отказов, брошенных корзин. Согласно исследованию Google, большинство посетителей не ждёт загрузки больше 3 секунд и уходит к конкурентам. Бывает, что сайт ...