TPDE вышел в open-source и уже положил Clang на лопатки

В 20 раз быстрее без оптимизаций.


hqwpaldkuacu0y32ofeg8swkgrrhseyk.jpg


Исследователи из Технического университета Мюнхена (TUM) представили TPDE — инструмент для быстрой компиляции кода, который способен ускорить сборку для архитектур x86_64 и AArch64 в 10–20 раз по сравнению с LLVM Clang на базовом уровне оптимизации -O0. Новый backend-компилятор ориентирован на задачи с минимальной задержкой — например, для JIT-сборки или быстрой отладки без оптимизаций. Исходный код проекта уже доступен на GitHub , а описание архитектуры опубликовано в научной статье на arXiv .

TPDE работает как самостоятельный модуль генерации кода, совместимый с SSA IR и заточенный под низкую задержку компиляции. В текущей версии поддерживаются только платформы с ELF — x86-64 и AArch64 (Armv8.1). Качество кода на уровне -O0, по утверждению авторов, вполне сопоставимо с LLVM, при этом время сборки сокращается в разы.

Отдельный компонент, TPDE-LLVM , представляет собой backend для LLVM IR, который компилирует код в 10–20 раз быстрее, чем стандартный LLVM на -O0. Его можно использовать как библиотеку, отдельную утилиту (tpde-llc) или встроить в Clang/Flang с помощью патча. Такой подход делает TPDE привлекательным для JIT-систем, где важны скорость и предсказуемость сборки.

Разработчики также представили TPDE на форуме LLVM.org Discourse , где подробно описали особенности фреймворка, привели данные тестирования и сравнения со стандартным LLVM. В частности, они указали, что их решение поддерживает типичный поднабор LLVM IR и фокусируется только на x86-64 и AArch64.

В результатах бенчмарков SPEC CPU 2017, опубликованных вместе с анонсом, TPDE стабильно показывает в 10–20 раз более короткое время сборки при аналогичной производительности итогового кода. Единственным компромиссом оказывается увеличенный размер бинарников — на 10–30%.

Важно подчеркнуть, что TPDE не конкурирует с LLVM на уровнях -O2 или -O3, где активны продвинутые оптимизации. Его задача — быстрое получение рабочего кода с минимальной задержкой, например, при частой перекомпиляции в ходе отладки или в средах с ограниченными ресурсами.

Сейчас проект сосредоточен на -O0 и -O1, но команда TUM надеется развивать TPDE дальше — расширять поддержку LLVM IR и исследовать возможности ускоренной компиляции с оптимизациями. В условиях роста интереса к JIT и edge-компиляции это направление может получить широкое распространение.