Детальная информация

Название: Реализация оптимизации Stream Fusion для языка Kotlin: выпускная квалификационная работа магистра: направление 09.04.01 «Информатика и вычислительная техника» ; образовательная программа 09.04.01_15 «Технологии проектирования системного и прикладного программного обеспечения»
Авторы: Крылов Иван Сергеевич
Научный руководитель: Ицыксон Владимир Михайлович
Другие авторы: Новопашенный Андрей Гелиевич
Организация: Санкт-Петербургский политехнический университет Петра Великого. Институт компьютерных наук и технологий
Выходные сведения: Санкт-Петербург, 2021
Коллекция: Выпускные квалификационные работы; Общая коллекция
Тематика: Программирования языки; Вычислительные машины электронные персональные — Программирование; программная оптимизация; program optimisation
УДК: 004.438; 004.42
Тип документа: Выпускная квалификационная работа магистра
Тип файла: PDF
Язык: Русский
Код специальности ФГОС: 09.04.01
Группа специальностей ФГОС: 090000 - Информатика и вычислительная техника
Ссылки: Отзыв руководителя; Рецензия; Отчет о проверке на объем и корректность внешних заимствований
DOI: 10.18720/SPBPU/3/2021/vr/vr21-689
Права доступа: Доступ по паролю из сети Интернет (чтение, печать, копирование)

Разрешенные действия:

Действие 'Прочитать' будет доступно, если вы выполните вход в систему или будете работать с сайтом на компьютере в другой сети Действие 'Загрузить' будет доступно, если вы выполните вход в систему или будете работать с сайтом на компьютере в другой сети

Группа: Анонимные пользователи

Сеть: Интернет

Аннотация

Тема выпускной квалификационной работы: «Реализация оптимизации Stream Fusion для языка Kotlin». Предметом исследования является оптимизация stream fusion и её применимость к языку программирования Kotlin. Целью данной работы является реализация оптимизации Stream Fusion для языка Kotlin. В рамках данной цели были поставлены следующие задачи: 1. Изучить существующие подходы к решению проблемы Stream Fusion оптимизации; 2. Рассмотреть имеющиеся реализации предложенных подходов; 3. На основе рассмотренных решений предложить собственную реализацию Stream Fusion оптимизации, применимую к языку Kotlin. В результате выполнения выпускной квалификационный работы была предложена реализация оптимизации Stream Fusion для языка Kotlin. Полученное решение позволяет описывать преобразования над списками лаконично в функциональном стиле, при этом получая высокопроизводительный императивный код в результате компиляции. На тестовых примерах решение с использованием написанной библиотеки работает в среднем в 8 раз быстрее аналогичных примеров с использованием средств стандартной библиотеки Kotlin и в 12 раз быстрее Java Stream API, уступая в производительности императивным циклам в общем случае только в 2 раза.

The theme of the final qualifying work: «Implementation of Stream Fusion optimization for the Kotlin language». The subject of the research is stream fusion optimization and its applicability to the Kotlin programming language. The aim of this work is to implement Stream Fusion optimization for the Kotlin language. The following tasks were set within the subject of this research: 1. Examine existing approaches to solving the problem of Stream Fusion optimization; 2. Consider the available implementations of the considered approaches; 3. Based on the considered solutions, propose an implementation of Stream Fusion optimization applicable to the Kotlin language; As a result of the final qualifying work, an implementation of Stream Fusion optimization for the Kotlin language was proposed. The resulting solution allows to describe transformations over lists in a laconic functional style, while obtaining high-performance imperative code as a result of compilation. On test examples, the solution using the written library works on average 8 times faster than similar examples using the tools of the Kotlin standard library and 12 times faster than the Java Stream API, yielding in performance to imperative loops in the general case only 2 times.

Права на использование объекта хранения

Место доступа Группа пользователей Действие
Локальная сеть ИБК СПбПУ Все Прочитать Печать Загрузить
Интернет Авторизованные пользователи СПбПУ Прочитать Печать Загрузить
Интернет Авторизованные пользователи (не СПбПУ)
-> Интернет Анонимные пользователи

Оглавление

  • ВВЕДЕНИЕ
  • 1. Существующие подходы к оптимизации Stream Fusion
    • 1.1. Unfold/fold framework
    • 1.2. Deforestation оптимизация
    • 1.3. Shortcut Fusion
    • 1.4. Shortcut fusion — destroy/unfoldr
    • 1.5. Stream Fusion
    • 1.6. Staged Stream Fusion
    • 1.7. Резюме
  • 2. Реализация оптимизации Stream Fusion для языка Kotlin
    • 2.1. Трансдьюсеры
    • 2.2. Оптимизация Stream Fusion на основе трансдьюсеров
    • 2.3. Реализация Stream Fusion оптимизации на основе трансдьюсеров
    • 2.4. Расширение базовой функциональности
      • 2.4.1. Ленивая функция transduce
      • 2.4.2. Слияние нескольких контекстов
    • 2.5. Промежуточные результаты
    • 2.6. Расширение компилятора Kotlin дополнительной фазой инлайнинга
      • 2.6.1. Реализация фазы инлайнинга для компилятора Kotlin
      • 2.6.2. Результаты
    • 2.7. Резюме
  • 3. Тестирование производительности
    • 3.1. Тестовые примеры
    • 3.2. Тестовые данные
    • 3.3. Метод тестирования
    • 3.4. Системная информация
    • 3.5. Результаты экспериментов
    • 3.6. Холодный запуск тестов
    • 3.7. Аллокация объектов
    • 3.8. Резюме
  • ЗАКЛЮЧЕНИЕ
  • СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
  • ПРИЛОЖЕНИЕ 1. ТАБЛИЦЫ
  • ПРИЛОЖЕНИЕ 2. ЛИСТИНГИ

Статистика использования

stat Количество обращений: 1
За последние 30 дней: 0
Подробная статистика