When talking about performance the following points need to be noted about Erlang.
Funs are very fast − Funs was given its own data type in R6B and was further optimized in R7B.
Using the ++ operator − This operator needs to be used in the proper way. The following example is the wrong way to do a ++ operation.
-module(helloworld). -export([start/0]). start()-> fun_reverse([H|T]) -> fun_reverse(T)++[H]; fun_reverse([]) -> [].
As the ++ operator copies its left operand, the result is copied repeatedly, leading to quadratic complexity.
Using Strings − String handling can be slow if done improperly. In Erlang, you need to think a little more about how the strings are used and choose an appropriate representation. If you use regular expressions, use the re-module in STDLIB instead of the obsolete regexp module.
BEAM is a Stack-Based Byte-Code Virtual Machine − BEAM is a register-based virtual machine. It has 1024 virtual registers that are used for holding temporary values and for passing arguments when calling functions. Variables that need to survive a function call are saved to the stack. BEAM is a threaded-code interpreter. Each instruction is word pointing directly to executable C-code, making instruction dispatching very fast.