В статье кратко рассказывается как собрать сие чудо и, самое главное, приводятся результаты некоторых тестов. По отдельным тестам двукратное ускорение :) Правда под это дело надо хакать и GHC, и LLVM.
Вот только «бэкэнд» LLVM всё равно показывает чуть более быстрые результаты (правда не уверен что по всем операциям, а не только по приведенным тестам)
Там, в статье, ещё говорится, что с опциями оптимизации LLVM ещё и не начинали «играться» ;)
Я, честно говоря, не понимаю всего этого ажиотажа вокруг LLVM. Легче к языку написать бэкенд для LLVM, чем для gcc? Заявляют, что да. Будет работать быстрее? Нет.
>Я, честно говоря, не понимаю всего этого ажиотажа вокруг LLVM.
Ну у неё есть таки «перспективка» :) На отдельных «синтетических» тестах показывает (показывала?) бо'льшую скорострельность кода за счёт различных оптимизаций кода (т.е. не на обычных циклах, а на чуть более сложных кусках программы) - обсуждалось здесь же надцать месяцев назад.
Ну у неё есть таки «перспективка» :) На отдельных «синтетических» тестах показывает (показывала?) бо'льшую скорострельность кода за счёт различных оптимизаций кода (т.е. не на обычных циклах, а на чуть более сложных кусках программы) - обсуждалось здесь же надцать месяцев назад.
Так gcc тоже на месте не стоит. Например, 4.3 и 4.4 - две большие разницы.
> Я, честно говоря, не понимаю всего этого ажиотажа вокруг LLVM. Легче к языку написать бэкенд для LLVM, чем для gcc? Заявляют, что да. Будет работать быстрее? Нет.
На счёт скорости сомневаюсь. В частности, LLVM умеет IPO на этапе компоновки, а не компиляции отдельного модуля.
Да и бекенды... Насколько я понял, разглядывая gcc, он - монолит. А кишки LLVM живут в либах, на базе которых можно делать свои компиляторы.
LLVM делает более высокоуровневые оптимизации, чем бекенд gcc. Для Си это бесполезно (в gcc те же оптимизации делаются, но не на уровне общего для всех языков бекенда), а вот для сложных языков высокого уровня, у которых тупая и примитивная схема компиляции, это очень даже полезно. LLVM неплохо устраняет артефакты от такой трансляции.
Не понимаю, блин. В GCC4 архитектура очень похожая на LLVM. Только вот АФАЙР никому кроме gcc-хакеров непонятная ввиду отсутствия хоть какой-нибудь высокоуровневой документации и жуткой монолитности самого GCC.
Конечно понятно, что GHC давно пора обзаводиться своим кодогенерирующим бэк-ендом и в краткосрочной перспективе более привлекательна именно LLVM... Но в долгосрочной перспективе (ака «продакшен») ничего кроме как взаимодействие GHC с миддл-ендом GCC просто нет.
Кстати, может быть ребята из гугла в своем GCCgo чего-нибудь сообществу подгонят, но все-равно пока они держат отдельную ветку GCC, да и насущный проблемы (типа полного отсутствия в GCCgo сборщика мусора) имеются.
>Конечно понятно, что GHC давно пора обзаводиться своим кодогенерирующим бэк-ендом и в краткосрочной перспективе более привлекательна именно LLVM... Но в долгосрочной перспективе (ака «продакшен») ничего кроме как взаимодействие GHC с миддл-ендом GCC просто нет.
Имхо сейчас он по дефаулту (без -via-C) генерит асм самостоятельно, минуя gcc.