1 回答

TA貢獻(xiàn)1836條經(jīng)驗 獲得超13個贊
Erlang的并發(fā)性能也并非最強過去曾認(rèn)為Erlang就代表高并發(fā),高并發(fā)就代表高性能,同時認(rèn)為Erlang就只是高并發(fā)的代名詞。其實,Erlang的并發(fā)性能也并非最強。首先Erlang的虛擬機是C寫的,其次諸如Haskell、OCaml + JoCaml,以及Python的PyPy,其實都能提供不弱于Erlang的并發(fā)能力。
同時Erlang在順序計算上的性能也不佳,甚至不能超過Python、Lua這類腳本語言(也許是和其本身的特殊性質(zhì)有關(guān))。所以就更落后于Haskell和OCaml這類可編譯的語言。然而即使并發(fā)和并行也需要順序計算,所以單從并發(fā)性能上來說,Erlang還不是最強的。
Erlang寫的Yaws這個Web服務(wù)器,雖然能承受高并發(fā),但性能,尤其是IO性能依然無法與lighttpd、nginx這種C寫的Web服務(wù)相比——Erlang的虛擬機本身也是C寫的。
同時,Erlang本身設(shè)計為一個結(jié)構(gòu)化編程語言而非面向?qū)ο?/a>編程語言。這就令其較難應(yīng)用更有開發(fā)效率的面向?qū)ο?/a>的項目開發(fā)流程和方法。
那么為何Erlang在并發(fā)、分布式編程中如此受推崇?我認(rèn)為因為它本身是并發(fā)和并行在語義、處理上的一致,所以它編寫此類程序更加方便。同時,它提供的是一個關(guān)于并發(fā)、并行以及分布式的統(tǒng)一的解決方案,而不僅僅是高并發(fā)。它的目的是構(gòu)建有容錯能力、有伸縮性的可靠系統(tǒng),同時又能最簡化編程工作。這就是它的真正的優(yōu)勢。
添加回答
舉報