конференция Яндекса, которую разработчики на C++ готовят для всех практикующих плюсовиков. Вас ждёт прикладной С++ — измеримые метрики и реальные кейсы.
(по московскому времени, GMT+3)
Мы готовим большой анонс для разработчиков на С++. Вам понравится, приходите :)
В Яндекс Такси, Еде, Лавке, Доставке и Маркете стоит задача быстро и качественно писать на C++ эффективные и высоконагруженные сервисы. Мы используем этот язык, потому что он производительный, строго типизированный и имеет большое количество библиотек. Для того чтобы писать микросервисы было просто, мы разработали асинхронный высокопроизводительный фреймворк userver. В этом докладе я расскажу, как легко и быстро написать высоконагруженный сервис динамических конфигов, которым могут пользоваться сотни других сервисов.
В докладе рассматривается реализация обходов произвольных графов в различной нумерации — Post Ordering, Reverse Post Ordering, а также поиска в графе сильно связных компонент для дальнейшего обхода отдельных компонент. Прослушав доклад, можно без труда реализовать рассмотренную функциональность для обхода произвольных графов (специализируя только соответствующий traits) в различном порядке. Данная реализация минималистична, эффективна и удобна в использовании, что позволит существенно снизить время разработки таких типовых задач, как обход графов, при этом избежав типичных ошибок.
В докладе также будут рассмотрены примеры на реальных приложениях, где необходимы упомянутые обходы графов.
Обсудим новости со встречи Международного комитета по стандартизации языка С++. #warning, уместное использование volatile, constexpr можно писать на всём подряд, static operator(), float16_t и bfloat16_t, [[assume(x)]] и прочие интересные новинки C23++. Руководитель РГ21 С++ Антон Полухин ответит на вопросы и расскажет о планах на C++26.
Каждый достаточно крупный проект рано или поздно приходит к состоянию, когда текущая производительность не устраивает и нужно прибегать к оптимизации потребления ресурсов.
В своем докладе я расскажу о нескольких проектах, при работе над которыми мы столкнулись с необходимостью оптимизировать производительность имеющегося кода.
В ходе этой оптимизации мы использовали различные приемы и техники, которые могут быть переиспользованы в других проектах.
Всё, о чем буду рассказывать, так или иначе связано с геолокацией и HTTP-запросами. Приходите, если вам интересно что-нибудь из перечисленного.
Concurrency во встраиваемой базе сложна, так как надо балансировать между ожидаемой пользой и накладными расходами.
За последнее время я придумал пару-тройку трюков с минимальными накладными расходами.
Интересные трюки:
Как всё действует, в картинках — у меня в докладе.
Доклады об ускорении условных баз данных на 5−10% большинству людей не интересны: да, это то, за что программистам платят, но эти оптимизации обычно слишком сложные и специфичные, чтобы их можно было сразу применить где-нибудь еще.
Другое дело — оптимизация базовых алгоритмов из учебников — тех, которые кажутся настолько простыми, что пытаться ускорять их даже в голову не придет. Такие оптимизации, как правило, просты, поучительны, многократны и, на удивление, не так редки, как многие думают.
В этом докладе мы сосредоточимся на одном из таких фундаментальных алгоритмов — бинарном поиске. Рассмотрим ряд способов ускорить его с помощью branchless-программирования, оптимизации доступов к памяти и использования SIMD-инструкций и постепенно выведем алгоритм до 15 раз быстрее std::lower_bound.
Работает разработчиком С++ в Яндексе 10 лет.
Имеет опыт в высоконагруженном бэкенде, приложениях, а также в создании онлайн-курсов.
Создал онлайн-специализацию по С++ «Пояса по С++», а также онлайн-курс «Алгоритмический фундамент программиста».
Докладчик различных конференций: C++ Russia, SECR, KnowledgeConf.
Ведёт телеграмм канал Алгоритмический фундамент.
Представитель России в международной рабочей группе по стандартизации C++ (WG21 ISO). Автор многих принятых предложений к стандарту языка C++.
Председатель российской рабочей группы по стандартизации С++. Разрабатывает и поддерживает стандартную библиотеку GСC, библиотеки Boost. Aвтор Boost-библиотек TypeIndex, DLL, Stacktrace и активный maintainer Any, Conversion, LexicalCast, Variant.
Автор книг «Boost C++ Application Development Cookbook».
Я фанат языка C++, у меня есть опыт написания своей веб-версии мини-фреймворка как дополнительного проекта еще до работы в Яндексе. Когда я прочел статью о фреймворке userver, влюбился в него, это и стало моей причиной прихода в Яндекс. Больше года я проработал в Яндекс Еде, где на практике работал с userver, параллельно помогая разрабатывать его, чтобы вывести этот фреймворк на новый уровень. Когда я окончательно понял, что инфраструктура интересует меня больше продукта, я сменил направление работы и стал полноценным членом команды userver. Сейчас я занимаюсь разработкой userver, а также сервиса динамических конфигов.
В настоящий момент занимается разработкой компиляторов C/C++ для архитектуры AArch64.
Имеет опыт разработки:
Контрибьютит в ClickHouse. Пишет на С++ высоконагруженные сервисы четыре года, из них год работал в инфраструктурных командах Яндекса, в том числе в рантайме Поиска. Программирует на С++ девять лет.
Пишет производительный код. Когда получается недостаточно производительный — переписывает.
В свободное от работы время решает олимпиадные задачки по программированию.
Более 10 лет занимается исследованием новых подходов и созданием решений в областях adtech, fintech и ML.
В область интересов входят вопросы разработки распределённых систем, параллельной и конкуррентной обработки информации.
Улучшает мир посредством опенсорса: https://duckstax.com/
Написал самое быстрое в мире B-дерево, бинарный поиск, факторизацию целых чисел, парсинг целых чисел, алгоритм Флойда, префиксную сумму и поиск и аргминимум на массиве.
Автор «Algorithms for Modern Hardware» и «Алгоритмики».
В прошлых жизнях ML-разработчик (в том числе в Яндексе) и спортивный программист.
Представитель России в международной рабочей группе по стандартизации C++ (WG21 ISO). Автор многих принятых предложений к стандарту языка C++.
Председатель российской рабочей группы по стандартизации С++. Разрабатывает и поддерживает стандартную библиотеку GСC, библиотеки Boost. Aвтор Boost-библиотек TypeIndex, DLL, Stacktrace и активный maintainer Any, Conversion, LexicalCast, Variant.
Автор книг «Boost C++ Application Development Cookbook».
Работает разработчиком С++ в Яндексе 10 лет.
Имеет опыт в высоконагруженном бэкенде, приложениях, а также в создании онлайн-курсов.
Создал онлайн-специализацию по С++ «Пояса по С++», а также онлайн-курс «Алгоритмический фундамент программиста».
Докладчик различных конференций: C++ Russia, SECR, KnowledgeConf.
Ведёт телеграмм канал Алгоритмический фундамент.
Пишу на C++ с 1999 года. Делал разное: от автоматизации хлебозаводов и крематориев до банковского и биржевого ПО и геймдева. Сейчас — руководитель разработки бэкенда Яндекс.Лавки. Люблю open source и головоломные задачи.
Старший разработчик в Google Flume/Apache Beam/Mapreduce-системах. Ведущий канала о перформансе, контрибьютер в стандартную библиотеку Google Abseil, а также LLVM.
Более 10 лет опыта разработки на C++. Работал в различных областях: обработка AV-контента, таргетирование рекламы, HFT. Последние 5 лет занимался направлением эффективности сначала Яндекс Такси, а потом Лавки.
Занимается всем бэкендом: С++, Python, Go, Java. Open-source-проекты: ClickHouse, YDB и т. д.
Мероприятия Яндекса, спикеры, внешние конференции, Хабр, СМИ, спецпроекты, работа с внутренними и внешними сообществами, онлайн-проекты и стратегия DevRel.
Готовит спикеров к выступлениям на конференциях.