Erlang - Prestazioni

Quando si parla di prestazioni, è necessario notare i seguenti punti di Erlang.

  • Funs are very fast - Funs ha ricevuto un proprio tipo di dati in R6B ed è stato ulteriormente ottimizzato in R7B.

  • Using the ++ operator- Questo operatore deve essere utilizzato in modo corretto. Il seguente esempio è il modo sbagliato di eseguire un'operazione ++.

Esempio

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

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

Quando l'operatore ++ copia il suo operando sinistro, il risultato viene copiato ripetutamente, portando a una complessità quadratica.

  • Using Strings- La gestione delle stringhe può essere lenta se eseguita in modo improprio. In Erlang, devi pensare un po 'di più a come vengono utilizzate le corde e scegliere una rappresentazione appropriata. Se usi le espressioni regolari, usa il re-module in STDLIB invece diobsolete regexp module.

  • BEAM is a Stack-Based Byte-Code Virtual Machine- BEAM è una macchina virtuale basata su registri. Ha 1024 registri virtuali che vengono utilizzati per contenere valori temporanei e per passare argomenti quando si chiamano le funzioni. Le variabili che devono sopravvivere a una chiamata di funzione vengono salvate nello stack. BEAM è un interprete di codice a thread. Ogni istruzione è una parola che punta direttamente al codice C eseguibile, rendendo l'invio delle istruzioni molto veloce.