Prestazioni di F # rispetto alla performance di Erlang, c'è la prova che la VM di Erlang è più veloce?

19

Ho dedicato del tempo all'apprendimento della programmazione funzionale e sono giunto alla parte in cui voglio iniziare a scrivere un progetto invece di dilettarmi in tutorial / esempi.

Durante le mie ricerche, ho scoperto che Erlang sembra essere piuttosto potente quando si tratta di scrivere software concorrente (che è il mio obiettivo), ma le risorse e gli strumenti per lo sviluppo non sono così maturi come i prodotti di sviluppo Microsoft.

F # può essere eseguito su linux (Mono) in modo tale che il requisito sia soddisfatto, ma guardando su Internet non riesco a trovare alcun confronto tra F # e Erlang. In questo momento, mi sto appoggiando ad Erlang solo perché sembra avere la maggior parte della stampa, ma sono curioso di sapere se c'è davvero qualche differenza di prestazioni tra i due sistemi.

Dato che sono abituato a sviluppare in .NET, posso probabilmente arrivare ad accelerare con F # molto più velocemente di Erlang, ma non riesco a trovare alcuna risorsa per convincermi che F # è altrettanto scalabile quanto Erlang.

Sono più interessato alla simulazione, che sta per inviare molti messaggi elaborati rapidamente a nodi persistenti.

Se non ho fatto un buon lavoro con quello che sto cercando di chiedere, ti preghiamo di chiedere ulteriori verifiche.

    
posta afuzzyllama 04.12.2011 - 17:38
fonte

3 risposte

21

Che cosa intendi per "fattibile?" "Avere la maggior parte della stampa" non è necessariamente il modo migliore per scegliere una lingua.

L'affermazione di Erlang per la fama è la sua capacità di una massiccia parallelizzazione. Ecco perché è comunemente usato negli switch telefonici Ericsson. Erlang è soft-realtime, quindi puoi fare certe garanzie sulle prestazioni.

F # beneficia delle capacità di ottimizzazione di .NET Jitter. Inoltre, il linguaggio stesso è progettato per essere un linguaggio funzionale ad alte prestazioni (essendo una variante di OCaml, ampiamente utilizzato nel settore finanziario a causa della sua velocità).

In fin dei conti, a meno che tu non abbia in programma di eseguire milioni di piccoli agenti allo stesso tempo (che è ciò per cui Erlang è ottimizzato), F # dovrebbe essere all'altezza del compito.

Questa pagina spiega i casi d'uso appropriati per Erlang.

    
risposta data 04.12.2011 - 17:48
fonte
7

Poche dichiarazioni oggettive possono essere fatte su questo argomento perché le prestazioni di queste due lingue dipendono strongmente dall'applicazione e dallo stile di programmazione.

L'unico consiglio che posso dare è che F # ha il vantaggio in termini di prestazioni di un sistema di tipo statico e il CLR fa un buon lavoro sfruttando questo per migliorare le prestazioni. F # ha agenti asincroni e il passaggio di messaggi, ma non è stato ottimizzato e il codice sincrono è spesso superiore a 10 × più veloce.

Erlang è tipizzato dinamicamente e si trova in uno svantaggio significativo in termini di prestazioni (si prevede molto più boxing) ma è stato costruito da zero per supportare il passaggio rapido dei messaggi tra agenti asincroni, quindi potrebbe essere molto più veloce di l'equivalente F #. Tuttavia, non ho risultati di benchmark per confermare: è solo una mia aspettativa.

Per inciso, sia Erlang che F # sono lingue relativamente marginali con piccole comunità e, a causa dei diversi mercati di destinazione, le persone che hanno familiarità con entrambi sono rari. L'unica persona a cui riesco a pensare è quasi Jesper Louis Andersen ma non sono sicuro di quanto F # abbia fatto.

    
risposta data 23.02.2012 - 15:18
fonte
4

Dovresti leggere questo post di Joe Armstrong: link

In breve, Erlang non è stato progettato per essere veloce! In molti casi è ragionevolmente veloce ma è secondario rispetto a problemi come tolleranza agli errori e stabilità.

La verità è che sia Erlang sia F # sono dei buoni linguaggi, e mentre ho solo dato una rapida occhiata a F # ho scritto un libro su Erlang: Costruire applicazioni Web con Erlang e posso dire che è un linguaggio divertente su cui lavorare.

Vorrei anche sottolineare che sembra esserci un boom di libri linguistici funzionali da pubblicare nei prossimi 6-9 mesi. Ne conosco almeno 4 su Erlang (incluso il mio), Uno su Haskell, così come Titoli su OCaml, Clojure e F #.

    
risposta data 10.04.2012 - 12:35
fonte

Leggi altre domande sui tag