Red de conocimiento informático - Material del sitio web - Cómo entender la distribución y concurrencia de erlang

Cómo entender la distribución y concurrencia de erlang

El rendimiento de concurrencia de Erlang no es el más fuerte. En el pasado, se pensaba que Erlang representaba alta concurrencia y alta concurrencia representaba alto rendimiento. Al mismo tiempo, Erlang solo era sinónimo de alta concurrencia. De hecho, el rendimiento de concurrencia de Erlang no es el más sólido. En primer lugar, la máquina virtual de Erlang está escrita en C. En segundo lugar, herramientas como Haskell, OCaml + JoCaml y PyPy de Python pueden proporcionar capacidades de concurrencia que no son más débiles que Erlang.

Al mismo tiempo, el rendimiento de Erlang en cálculos secuenciales también es pobre y ni siquiera puede superar a los lenguajes de scripting como Python y Lua (quizás debido a sus propias propiedades especiales). Por lo tanto, está aún más por detrás de los lenguajes compilables como Haskell y OCaml. Sin embargo, incluso la concurrencia y el paralelismo requieren cálculos secuenciales, por lo que solo en términos de rendimiento de concurrencia, Erlang no es el más fuerte.

Aunque el servidor web Yaws escrito en Erlang puede soportar una alta concurrencia, su rendimiento, especialmente el rendimiento IO, todavía no es comparable al de los servicios web escritos en C como lighttpd y nginx: la propia máquina virtual Erlang También escrita Cª.

Al mismo tiempo, Erlang en sí está diseñado como un lenguaje de programación estructurado en lugar de un lenguaje de programación orientado a objetos. Esto hace que sea más difícil aplicar procesos y métodos de desarrollo de proyectos orientados a objetos más eficientes.

Entonces, ¿por qué Erlang es tan respetado en la programación concurrente y distribuida? Creo que debido a que la semántica y el procesamiento son consistentes entre concurrencia y paralelismo, es más conveniente escribir dichos programas. Al mismo tiempo, proporciona una solución unificada sobre concurrencia, paralelismo y distribución, no solo alta concurrencia. Su propósito es construir sistemas confiables que sean tolerantes a fallas y escalables y al mismo tiempo minimicen el esfuerzo de programación. Ésta es su verdadera ventaja.