(Edit: lo davo per scontato, ma meglio chiarirlo: nel grafico sottostante l’asse Y è misurato in millisecondi di esecuzione per ciascun test, quindi un valore inferiore è preferibile)
Uno dei punti di forza da sempre declamati di Erlang è la capacità del runtime di gestire la concorrenza anche di migliaia di processi leggeri, grazie alle capacità del runtime, sviluppato appositamente attorno (tra le altre cose) a questa caratteristica. E’ anche il motivo per cui si dice che linguaggi concorrenti implementati su altre macchine virtuali (ad esempio, Scala sulla JVM) non potranno mai avere le medesime prestazioni.
Ebbene, dopo un post intrigante in una mailing list, ho esplorato le prestazioni del progetto Erjang (Erlang sulla JVM) versus Erlang stesso, utilizzando un programma di test distribuito direttamente con i sorgenti di quel progetto: gli autori di Erjang stesso dichiarano che le performance sono, in media, in linea con quelle del runtime originario; il mio test è stato fatto sull’Atom N270 dell’Eeepc, ed è interessante vedere come in alcuni punti la versione Java riesca ad avere le performances più alte.
Ammetto di non aver fatto i test in modo eccessivamente scientifico, in ogni caso i valori sono stati presi alla seconda esecuzione del test stesso, supponendo che la prima possa essere inficiata dal caricamento o dalla compilazione del codice.