为什么Erlang被认为比Java更适合Web游戏中的服务器端编程,C++?

2022-09-01 12:24:50

我真的不明白,二郎怎么可能比C++更有效率?


答案 1

Erlang的效率远低于C++。Erlang的最大优势是可扩展性,而不是效率。它将跨多个CPU进行线性扩展,并且由于其编程和通信模型,它将非常容易地跨机器集群进行扩展。

需要明确的是,Erlang的规模不会超过C++。它只是比C++更容易扩展。更容易。请参阅 Erlang 中的并发编程的第 5 章和第 6 章,以很好地解释为什么会这样。


答案 2

我可以看到一些原因:

  • Erlang 是为并发而设计的
  • Erlang 是为分布式系统设计的
  • Erlang 专为软实时系统而设计
  • Erlang 专为可用性而设计

但是,它不适合数字运算,但它具有良好的可用性,可以与C和C++以及其他语言进行交互。为正确的工作使用正确的工具。

为并发性而去

Erlang是一种面向并发的编程语言,非常适合可以高度并行化的应用程序,即游戏服务器。Erlang进程更轻量级,并且在进程通信中具有良好的性能。这意味着用 erlang 实现的应用程序可以比C++中的应用程序具有线程更多的进程。另请参阅我的问题 从技术上讲,为什么erlang中的进程比操作系统线程更有效

专为分布式系统设计

Erlang还内置了一些功能,使程序员在处理分布式系统时更有效率。有内置的语言基元用于在进程之间发送和接收消息,如果进程位于另一个核心或计算机上,则以相同的方式使用它。此外,当消息在进程之间发送时,程序员不必处理编组和序列化,这是语言中内置的。

专为软实时系统而设计

Erlang是为软实时系统设计的,这在做游戏服务器时很有用。与C++它具有内置的内存管理功能,这对程序员来说将更加高效。C++和malloc在使用许多线程时会遇到问题,并且可能是一个瓶颈(请参阅演示文稿Erlang SMP支持 - 幕后(14:00))。与Java相比,Erlang的垃圾回收是按进程(一个更小的单元)完成的,这在实时系统中很有用。

专为可用性而设计

Erlang 专为可用性至关重要的电信应用程序而设计。可用性功能之一是应用程序可以在运行时通过热代码交换进行更新。如果您想在游戏服务器仍处于联机状态时对其进行更新,这可能很有用。

我建议看这个演示:Erlang - 并发世界的软件


推荐