В ночных сборках Rust расширены возможности распараллеливания компиляции
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Во фронтэнде компилятора Rust, выполняющем такие задачи, как синтаксический анализ, проверка типов и анализ заимствований, реализована поддержка параллельного выполнения, позволяющего существенно сократить время компиляции. Распараллеливание уже доступно в ночных сборках Rust и включается при помощи опции "-Z threads=8". В стабильную ветку рассматриваемую возможность планируют включить в 2024 году.
Работа над сокращением времени компиляции в Rust ведётся уже несколько лет. За первые 10 месяцев 2023 года время компиляции сократилось в среднем на 13%, пиковое потребление памяти снизилось на 15%, а размер генерируемых файлов уменьшился на 7%. На данном этапе ускорение было достигнуто за счёт оптимизаций самого компилятора. После этого разработчики перешли к работе над ускорением при помощи распараллеливания операций во время компиляции.
До сих пор распараллеливание в Rust обеспечивалось в основном на уровне процессов, например, пакетный менеджер Cargo может запускать несколько процессов rustc для одновременной компиляции нескольких пакетов. Поддержка распараллеливания также присутствует на стороне бэкенда, выполняющего операции, связанные с генерацией кода - бэкенд Rust может генерировать код частями, которые в дальнейшем LLVM может обрабатывать параллельно. Фронтэнд же до сих пор мог обрабатывать исходный код только в однопоточном режиме.
Для поддержки распараллеливания фронтэнд переведён на использование библиотеки Rayon и значительно переработан, например, многие его части теперь синхронизируются с помощью мьютексов и блокировок чтения/записи, а в коде используются атомарные типы. При тестировании производительности новая распараллеливаемая реализация могла выполнять компиляцию до 2% медленнее при работе в однопоточном режиме (-Z threads=1), но когда потоков больше одного скорость значительно возрастала. Например, при установке 8 потоков (-Z threads=8) в некоторых ситуациях время компиляции удавалось сократить на 50%.
При этом результат сильно зависит от настроек окружения и компилируемого кода - для очень маленьких программ, которые и так компилируются быстро, компиляция в многопоточном режиме может выполняться медленнее. Кроме того, потребление памяти в многопоточном режиме может значительно возрастать, например, в тестах наблюдался рост потребления памяти до 35%.
===========
Источник:
OpenNet.RU
===========
Похожие новости
- Главная ссылка к новости (https://blog.rust-lang.org/202...)
- OpenNews: Проект NGINX опубликовал инструментарий для разработки модулей на языке Rust
- OpenNews: Google переписал на языке Rust прошивку pvmfm, используемую в Android
- OpenNews: Открытие кода Rust-компилятора Ferrocene
- OpenNews: Выпуск языка программирования Rust 1.73
- OpenNews: JetBrains представил IDE RustRover и прекратил разработку открытого плагина intellij-rust
Похожие новости:
- Google представил проект Open Se Cura для создания защищённых программно-аппаратных систем
- В репозитории Crate будет прекращена поддержка неканонических загрузок
- Проект NGINX опубликовал инструментарий для разработки модулей на языке Rust
- Google переписал на языке Rust прошивку pvmfm, используемую в Android
- DNS-сервер Trust-DNS переименован в Hickory и будет задействован в инфраструктуре Let's Encrypt
- Открытие кода Rust-компилятора Ferrocene
- Опубликован Bottlerocket 1.15, дистрибутив на базе изолированных контейнеров
- Доступен набор компиляторов LLVM 17.0
- Выпуск RustPython 0.3, реализации интерпретатора Python на языке Rust
- Разработка браузерного движка Servo переведена в организацию Linux Foundation Europe
Теги для поиска: #_rust, #_compile, #_optimization
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 21-Ноя 15:05
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Во фронтэнде компилятора Rust, выполняющем такие задачи, как синтаксический анализ, проверка типов и анализ заимствований, реализована поддержка параллельного выполнения, позволяющего существенно сократить время компиляции. Распараллеливание уже доступно в ночных сборках Rust и включается при помощи опции "-Z threads=8". В стабильную ветку рассматриваемую возможность планируют включить в 2024 году. Работа над сокращением времени компиляции в Rust ведётся уже несколько лет. За первые 10 месяцев 2023 года время компиляции сократилось в среднем на 13%, пиковое потребление памяти снизилось на 15%, а размер генерируемых файлов уменьшился на 7%. На данном этапе ускорение было достигнуто за счёт оптимизаций самого компилятора. После этого разработчики перешли к работе над ускорением при помощи распараллеливания операций во время компиляции. До сих пор распараллеливание в Rust обеспечивалось в основном на уровне процессов, например, пакетный менеджер Cargo может запускать несколько процессов rustc для одновременной компиляции нескольких пакетов. Поддержка распараллеливания также присутствует на стороне бэкенда, выполняющего операции, связанные с генерацией кода - бэкенд Rust может генерировать код частями, которые в дальнейшем LLVM может обрабатывать параллельно. Фронтэнд же до сих пор мог обрабатывать исходный код только в однопоточном режиме. Для поддержки распараллеливания фронтэнд переведён на использование библиотеки Rayon и значительно переработан, например, многие его части теперь синхронизируются с помощью мьютексов и блокировок чтения/записи, а в коде используются атомарные типы. При тестировании производительности новая распараллеливаемая реализация могла выполнять компиляцию до 2% медленнее при работе в однопоточном режиме (-Z threads=1), но когда потоков больше одного скорость значительно возрастала. Например, при установке 8 потоков (-Z threads=8) в некоторых ситуациях время компиляции удавалось сократить на 50%. При этом результат сильно зависит от настроек окружения и компилируемого кода - для очень маленьких программ, которые и так компилируются быстро, компиляция в многопоточном режиме может выполняться медленнее. Кроме того, потребление памяти в многопоточном режиме может значительно возрастать, например, в тестах наблюдался рост потребления памяти до 35%. =========== Источник: OpenNet.RU =========== Похожие новости
|
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 21-Ноя 15:05
Часовой пояс: UTC + 5