【问题标题】:Elixir immutability in a game context游戏环境中的 Elixir 不变性
【发布时间】:2022-01-04 19:42:22
【问题描述】:

我知道,为了确保读取内存访问的所有线程读取完全相同的值,Elixir 永远不会覆盖正在使用的地址。相反,如果一个 var 发生了变化,它会被写入一个新地址。

我想知道这将如何影响实时游戏。例如,在 3D 游戏中移动会产生大量不同的值,需要重新分配和及时释放旧值。与简单地根据需要重写内存中的值相比,对于游戏而言,这有多好或更差?

【问题讨论】:

    标签: memory-management elixir immutability


    【解决方案1】:

    这是一个非常笼统的问题。像非常一般。

    首先,BEAM(Elixir 和 Erlang VM)优先考虑吞吐量和可预测的响应能力而不是延迟,但在游戏中延迟为王,延迟越多,FPS 就越低。

    其次,BEAM 主要是为容错和并发性而非性能而设计的,因此性能方面的 C/C++ 在进行直接内存访问和计算时会更快。

    一般来说,不可变数据结构具有成本优势(安全的并发性、更简单的程序推理、调试过程中的头痛和更简单的算法)原始性能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-16
      • 2014-01-21
      • 2010-12-19
      相关资源
      最近更新 更多