Erlang - Performance

Quand on parle de performance, les points suivants doivent être notés à propos d'Erlang.

  • Funs are very fast - Funs a reçu son propre type de données dans R6B et a été encore optimisé dans R7B.

  • Using the ++ operator- Cet opérateur doit être utilisé de manière appropriée. L'exemple suivant est la mauvaise façon d'effectuer une opération ++.

Exemple

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

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

Lorsque l'opérateur ++ copie son opérande gauche, le résultat est copié à plusieurs reprises, ce qui entraîne une complexité quadratique.

  • Using Strings- La gestion des chaînes peut être lente si elle n'est pas effectuée correctement. Dans Erlang, vous devez réfléchir un peu plus à la façon dont les chaînes sont utilisées et choisir une représentation appropriée. Si vous utilisez des expressions régulières, utilisez le re-module dans STDLIB au lieu duobsolete regexp module.

  • BEAM is a Stack-Based Byte-Code Virtual Machine- BEAM est une machine virtuelle basée sur des registres. Il a 1024 registres virtuels qui sont utilisés pour contenir des valeurs temporaires et pour passer des arguments lors de l'appel de fonctions. Les variables qui doivent survivre à un appel de fonction sont enregistrées dans la pile. BEAM est un interpréteur de code thread. Chaque instruction est un mot pointant directement vers un code C exécutable, ce qui rend la distribution des instructions très rapide.