escript — программа для запуска на Эрланге скриптов, то есть небольших программ, не требующих компиляции.
Предположим, у нас есть файл proba.erl. Его можно запустить в режиме скрипта с помощью команды escript proba.erl
. Можно запустить, используя аргументы командной строки: escript proba.erl 1 2 3
.
Не всякий модуль (файл *.erl) можно запустить с помощью escript. Для этого в нём должна быть экспортирована функция main/1. В обычных модулях такого требования нет.
Вместо вызова escript file.erl
мы можем сделать более привычный (в мире POSIX) скрипт с произвольным расширением (или вообще без него) и правами на исполнение. В первой строке такого скрипта должен быть указан путь к интерпретатору скрипта.
#!/usr/bin/escript
main(Words) -> io:format("hello words: ~p~n", [Words]).
Путь можно указать и иначе: #!/usr/bin/env escript
.
В виде скриптов удобно писать небольшие утилиты — их можно быстро подправить и снова запустить. Однако скрипты заметно медленнее скомпилированных программ.
Для повышения производительности скрипта можно его предварительно скомпилировать.
1> {ok, _, BeamCode} = compile:file("demo.erl", [binary, debug_info]).
2> escript:create("demo.beam", [{beam, BeamCode}]).
В первой строке мы компилируем файл demo.erl в бимкод. Можно обойтись без опции debug_info, и тогда код получится меньше. Во второй строке с помощью escript:create/2 записываем бимкод в файл demo.beam. После этого скрипт можно запустить с помощью команды escript demo.beam
.
Повышение производительности не очень существенное, но тем не менее заметное.
© Алексей Карманов, 2024.