TG Telegram Group & Channel
Scala bin | United States America (US)
Create: Update:

На днях промелькнула заметка об оптимизациях, проводимых компилятором Haskell.

Обычно в контексте максимальной производительности упоминают C, C++ или какую-нибудь из версий ASM. Это обусловлено тем, что данные языки максимально "близки к железу": позволяют напрямую работать с памятью, выравнивать байтики в структурах и компилируются напрямую в машинный код для целевой платформы.

При всём обилии оптимизаций в компиляторах таких языков, ускорение программы подразумевает неизменность в логике ее работы. В данном же случае выведение логики программы и, как следствие, возможность оптимизации, ограничены обилием низкоуровневых возможностей - компилятор не может однозначно вывести взаимосвязи между частями программы.

Haskell, в свою очередь, гораздо более структурирован и обладает своим набором оптимизаций перед компиляцией в язык C— (да, "си минус минус"), который впоследствии переводится в целевой язык. Внезапно, в некоторых случаях эти оптимизации позволяют превзойти в производительности аналогичную программу на языке (в данном случае, ATS), компилируемом с помощью gcc или clang.

Естественно, вышесказанное не означает, что Haskell "быстрее C" - интересна возможность использования функциональной природы языка для оптимизации самой структуры програмы. Можно надеяться, что подобный функционал появится и в Dotty - в списке возможностей компилятора строке "whole program optimizer" соответствует статус "в процессе".

На днях промелькнула заметка об оптимизациях, проводимых компилятором Haskell.

Обычно в контексте максимальной производительности упоминают C, C++ или какую-нибудь из версий ASM. Это обусловлено тем, что данные языки максимально "близки к железу": позволяют напрямую работать с памятью, выравнивать байтики в структурах и компилируются напрямую в машинный код для целевой платформы.

При всём обилии оптимизаций в компиляторах таких языков, ускорение программы подразумевает неизменность в логике ее работы. В данном же случае выведение логики программы и, как следствие, возможность оптимизации, ограничены обилием низкоуровневых возможностей - компилятор не может однозначно вывести взаимосвязи между частями программы.

Haskell, в свою очередь, гораздо более структурирован и обладает своим набором оптимизаций перед компиляцией в язык C— (да, "си минус минус"), который впоследствии переводится в целевой язык. Внезапно, в некоторых случаях эти оптимизации позволяют превзойти в производительности аналогичную программу на языке (в данном случае, ATS), компилируемом с помощью gcc или clang.

Естественно, вышесказанное не означает, что Haskell "быстрее C" - интересна возможность использования функциональной природы языка для оптимизации самой структуры програмы. Можно надеяться, что подобный функционал появится и в Dotty - в списке возможностей компилятора строке "whole program optimizer" соответствует статус "в процессе".


>>Click here to continue<<

Scala bin






Share with your best friend
VIEW MORE

United States America Popular Telegram Group (US)