为什么Erlang说比Web和C ++更适合网页游戏中的服务器端编程?

我真的不明白,Erlang如何比C ++更有效率?

Erlang的效率远远低于C ++。 Erlang的强大优势在于可扩展性,而非效率。 它将在多个CPU之间进行线性扩展,并且由于其编程和通信模型,可以非常轻松地跨机器集群进行扩展。

需要明确的是,Erlang的扩展性不会超过C ++; 它比C ++更容易扩展。 更容易。 请参阅Erlang中的并发编程的第5章和第6章,以便非常好地解释为什么会出现这种情况。

我可以看到一些原因:

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

但是,它对于数字运算并不好,但它具有与C和C ++以及其他语言接口的良好可用性。 使用正确的工具来完成正确的工作。

为并发而设计

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

专为分布式系统设计

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

专为软实时系统而设计

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

为可用性而设计

Erlang专为可用性至关重要的电信应用而设计。 其中一个可用性function是可以在运行时更新应用程序,并进行热代码交换。 如果您想要在游戏服务器仍在线时更新它,这将非常有用。

我建议看看这个演示文稿: Erlang – 一个并发世界的软件

当Erlang被提升为优于C时,它不是效率。它是关于error handling和并发性的。 使用适当的OTP原则用Erlang编写的服务器将自动具有从错误中恢复的出色方法。

你可以说Erlang对程序员编写服务器应用程序更有效。 当它运行时它会更稳定。