English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Erlang 性能

Quando si discute prestazioni, è necessario tenere a mente i seguenti punti relativi a Erlang.

  • Funs è molto veloce −In R6B, Funs ha ricevuto il proprio tipo di dati e in R7B è stato ulteriormente ottimizzato.

  • Uso dell'operatore ++−Deve utilizzare correttamente questo operatore. Esempi di metodi errati per eseguire l'operazione ++.

Esempio online

-module(helloworld). 
-export([start/0]). 
start() ->
   fun_reverse([H|T]) ->
   fun_reverse(T) ++ [H]; 
   fun_reverse([]) ->
   [].

Quando l'operatore ++ copia il suo operando di sinistra, il risultato viene copiato più volte, portando a una complessità di due volte.

  • Utilizzo delle stringhe−Se non gestita correttamente, la gestione delle stringhe potrebbe essere lenta. In Erlang, è necessario considerare attentamente come utilizzare le stringhe e scegliere la rappresentazione appropriata. Se si utilizzano espressioni regolari, utilizzare il modulo re della STDLIB invece del modulo regexp obsoleto.

  • −BEAM è un virtual machine basata su stack−BEAM è un virtual machine basata su register. Ha 1024 registri virtuali, utilizzati per conservare valori temporanei e passare parametri durante la chiamata di funzione. Le variabili che devono sopravvivere alla chiamata di funzione vengono salvate nello stack. BEAM è un interprete di codice thread. Ogni istruzione punta direttamente a una parola di codice eseguibile c, il che rende molto veloce la distribuzione delle istruzioni.