Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Мария Рубаненко (Fintech AI, Team lead DS) Повы...

Мария Рубаненко (Fintech AI, Team lead DS) Повышаем производительность программ: мой путь к succ[ess | inct]

По мере увеличения объёма данных, структуры данных, занимающие много дополнительного места, становятся всё менее производительны и возникает вопрос: как оптимально сжать структуру данных по памяти, чтобы не потерять производительность основных операций на структуре. В докладе разберёмся со сжатыми структурами данных, их практической реализацией, а также посмотрим для каких задач их целесообразно применять.

Видео: https://moscowpython.ru/meetup/101/increase-soft-perfomance/

Moscow Python: http://moscowpython.ru
Курсы Learn Python: http://learn.python.ru
Moscow Python Podcast: http://podcast.python.ru
Заявки на доклады: https://bit.ly/mp-speaker

Avatar for Moscow Python Meetup

Moscow Python Meetup

April 23, 2025
Tweet

More Decks by Moscow Python Meetup

Other Decks in Programming

Transcript

  1. Содержание 2 • 1. Терминология сжатия • 2. Суперсжатые структуры

    данных ❏ 2.1. Операции access / rank / select ❏ 2.2. Как сжать битовый массив ❏ 2.3. Суперсжатый битовый массив ❏ 2.4. Вейвлет-дерево ❏ 2.5. Как суперсжимать дерево • 3. Область применения суперсжатых структур данных • 4. Как реализовать суперсжатую структуру данных ❏ 4.1 Pysdsl ❏ 4.2 Sux ❏ 4.3 Facebook’s folly • 5. Выводы
  2. 1. Терминология сжатия 3 Compressed data structure = Сжатая структура

    данных • без потерь • с потерями Implicit data structure = Эффективная структура данных X + O(1) bit of Space, где X - нижняя граница теории информации Succinct data structure = Суперсжатая структура данных X + o(X) bit of Space, где X - нижняя граница теории информации Compact data structure = Компактная структура данных O(X) bit of Space, где X - нижняя граница теории информации
  3. 2. Суперсжатые структуры данных 4 • 1. Терминология сжатия •

    2. Суперсжатые структуры данных ❏ 2.1. Операции access / rank / select ❏ 2.2. Как сжать битовый массив ❏ 2.3. Суперсжатый битовый массив ❏ 2.4. Вейвлет-дерево ❏ 2.5. Как суперсжимать дерево • 3. Область применения суперсжатых структур данных • 4. Как реализовать суперсжатую структуру данных ❏ 4.1 Pysdsl ❏ 4.2 Sux ❏ 4.3 Facebook’s folly • 5. Выводы
  4. 3. Область применения суперсжатых структур данных 40 • 1. Терминология

    сжатия • 2. Суперсжатые структуры данных ❏ 2.1. Операции access / rank / select ❏ 2.2. Как сжать битовый массив ❏ 2.3. Суперсжатый битовый массив ❏ 2.4. Вейвлет-дерево ❏ 2.5. Как суперсжимать дерево • 3. Область применения суперсжатых структур данных • 4. Как реализовать суперсжатую структуру данных ❏ 4.1 Pysdsl ❏ 4.2 Sux ❏ 4.3 Facebook’s folly • 5. Выводы
  5. 3. Область применения суперсжатых структур данных 41 ▪ Поиск информации

    • поиск документов • поисков шаблонов в документе • автодополнение поискового запроса • индексы поиска ▪ ML • эмбеддинги языковой модели • ранжирование документов • генерация синтетической речи • распознавание речи на определенную тему ▪ Криптография • Неинтерактивные протоколы доказательства с нулевым разглашением • Гомоморфное шифрование
  6. 3. Область применения суперсжатых структур данных 42 ▪ Мобильные приложения

    ▪ Медицинские данные (ДНК) ▪ Потоковая обработка данных
  7. 4. Как реализовать суперсжатую структуру данных 43 • 1. Терминология

    сжатия • 2. Суперсжатые структуры данных ❏ 2.1. Операции access / rank / select ❏ 2.2. Как сжать битовый массив ❏ 2.3. Суперсжатый битовый массив ❏ 2.4. Вейвлет-дерево ❏ 2.5. Как суперсжимать дерево • 3. Область применения суперсжатых структур данных • 4. Как реализовать суперсжатую структуру данных ❏ 4.1 Pysdsl ❏ 4.2 Sux ❏ 4.3 Facebook’s folly • 5. Выводы
  8. 5. Выводы 59 • 1. Терминология сжатия • 2. Суперсжатые

    структуры данных ❏ 2.1. Операции access / rank / select ❏ 2.2. Как сжать битовый массив ❏ 2.3. Суперсжатый битовый массив ❏ 2.4. Вейвлет-дерево ❏ 2.5. Как суперсжимать дерево • 3. Область применения суперсжатых структур данных • 4. Как реализовать суперсжатую структуру данных ❏ 4.1 Pysdsl ❏ 4.2 Sux ❏ 4.3 Facebook’s folly • 5. Выводы
  9. 5. Выводы 60 Ограничения суперсжатых структур данных: • В большинстве

    случаев работают только со статическим набором данных • Шаблон доступа к памяти часто не локален • Реализация с нуля сложна • Известные алгоритмы необходимо адаптировать для быстрой работы с суперсжатыми структурами данных Преимущества суперсжатых структур данных: • Позволяют индексировать большие наборы данных (примерно в 10-100 раз больше по сравнению с классическими индексами). • Адаптируются к данным: например, фиксируют повторы • Реализация с нуля сложна • Предоставляют дополнительную функциональность • Не ограничиваются только индексацией текста