Erlang - Rendimiento

Cuando se habla de rendimiento, se deben tener en cuenta los siguientes puntos sobre Erlang.

  • Funs are very fast - Funs recibió su propio tipo de datos en R6B y se optimizó aún más en R7B.

  • Using the ++ operator- Este operador debe usarse de la manera adecuada. El siguiente ejemplo es la forma incorrecta de realizar una operación ++.

Ejemplo

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

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

A medida que el operador ++ copia su operando izquierdo, el resultado se copia repetidamente, lo que genera una complejidad cuadrática.

  • Using Strings- El manejo de cuerdas puede ser lento si no se realiza correctamente. En Erlang, debes pensar un poco más sobre cómo se usan las cadenas y elegir una representación adecuada. Si usa expresiones regulares, use el re-módulo en STDLIB en lugar delobsolete regexp module.

  • BEAM is a Stack-Based Byte-Code Virtual Machine- BEAM es una máquina virtual basada en registros. Tiene 1024 registros virtuales que se utilizan para almacenar valores temporales y para pasar argumentos al llamar a funciones. Las variables que necesitan sobrevivir a una llamada de función se guardan en la pila. BEAM es un intérprete de código enhebrado. Cada instrucción es una palabra que apunta directamente al código C ejecutable, lo que hace que el envío de instrucciones sea muy rápido.