Учебники

Эрланг — Производительность

Говоря о производительности, следует отметить следующие моменты, касающиеся Erlang.

  • Funs очень быстрые — Funs получил собственный тип данных в R6B и был дополнительно оптимизирован в R7B.

  • Использование оператора ++ — этот оператор должен использоваться правильно. В следующем примере показан неправильный способ выполнения операции ++.

Funs очень быстрые — Funs получил собственный тип данных в R6B и был дополнительно оптимизирован в R7B.

Использование оператора ++ — этот оператор должен использоваться правильно. В следующем примере показан неправильный способ выполнения операции ++.

пример

-module(helloworld). 
-export([start/0]). 

start()->
   fun_reverse([H|T]) ->
   fun_reverse(T)++[H]; 
   fun_reverse([]) ->
   [].

Поскольку оператор ++ копирует свой левый операнд, результат копируется многократно, что приводит к квадратичной сложности.

Использование строк — обработка строк может быть медленной, если выполняется неправильно. В Erlang вам нужно немного подумать о том, как используются строки, и выбрать подходящее представление. Если вы используете регулярные выражения, используйте re-module в STDLIB вместо устаревшего модуля regexp .

BEAM — это стековая виртуальная машина с байт-кодом — BEAM — это виртуальная машина на основе регистров. Он имеет 1024 виртуальных регистра, которые используются для хранения временных значений и передачи аргументов при вызове функций. Переменные, которые должны пережить вызов функции, сохраняются в стек. BEAM — интерпретатор многопоточного кода. Каждая инструкция является словом, указывающим непосредственно на исполняемый C-код, что делает отправку команды очень быстрой.