Использование libgccjit для ускорения работы Emacs от 2,3 до 42 раз [pdf]

Использованиеlibgccjitдляускоренияработыemacsот23до42разpdf

Загрузить PDF

Аннотация: Emacs Lisp (Elisp) – используемый диалект Lisp от семейства текстовых редакторов Emacs. GNU Emacs в настоящее время может выполнять код Elisp либо интерпретируемый, либо интерпретируемый байтами после того, как он был скомпилирован в байтовый код. В этой работе мы обсуждаем реализацию подхода оптимизирующего компилятора для Elisp, ориентированного на собственный код. Собственный компилятор использует внутреннее представление байтового компилятора в качестве входных данных и использует libgccjit для генерации кода с использованием инфраструктуры GNU Compiler Collection (GCC). Сгенерированные исполняемые файлы хранятся в виде двоичных файлов и могут загружаться и выгружаться динамически. Большая часть функциональных возможностей компилятора написана на самом Elisp, включая несколько этапов оптимизации в сочетании с серверной частью C для взаимодействия с ядром GNU Emacs и libgccjit. Хотя работа еще не завершена, наша реализация способна загружать функциональный Emacs и компилировать все файлы Elisp с лексической областью видимости, включая весь архив пакетов GNU Emacs Lisp (ELPA). Скомпилированный в собственном коде Elisp показывает увеличение производительности в диапазоне от 2.3x до 42 x по сравнению с эквивалентный байт-код, измеренный по набору небольших тестов.

История отправки

От: Никола Манка, доктор [view email]

[v1] пн, 6 апр 2020 18: 18: 29 УНИВЕРСАЛЬНОЕ ГЛОБАЛЬНОЕ ВРЕМЯ (979 КБ)

Leave a comment

Your email address will not be published. Required fields are marked *