由于函数式代码在定义上尽可能避免可变性,因此可以通过随时间展开先前的状态来编写有状态的程序。因此,我正在纯粹使用函数式风格编写F#游戏,当然游戏往往具有大量的状态。我基本上使用记录来表示游戏对象(例如玩家),并且简单地映射所有这些状态以获得下一个状态,这非常有效。但是,随着我的游戏越来越复杂,我担心由于每次更新都需要复制所有内容,它会变得缓慢。我想知道如何避免未来出现这些问题(目前还不是什么问题,虽然)。
那么,在函数式风格中是否有任何重要的优化可用于更改较小部分时不必复制大块数据?此外,F#是否具有我可以利用的与此类似的东西?
另外一件事-这里是我两个主要的问题,这可能甚至不是真的。我想弄清楚这些问题:
1. 垃圾收集。由于我每秒钟都要复制数千条记录,肯定会产生大量对象,而这些对象全部都是非常短暂的,因为我只是扔掉旧状态。这似乎是游戏每秒或如此跳动的一个可能原因,虽然几乎不会被注意到。
2. F#是否有效地复制记录并更新所有字段?如果没有,我该如何提高效率?
那么,在函数式风格中是否有任何重要的优化可用于更改较小部分时不必复制大块数据?此外,F#是否具有我可以利用的与此类似的东西?
另外一件事-这里是我两个主要的问题,这可能甚至不是真的。我想弄清楚这些问题:
1. 垃圾收集。由于我每秒钟都要复制数千条记录,肯定会产生大量对象,而这些对象全部都是非常短暂的,因为我只是扔掉旧状态。这似乎是游戏每秒或如此跳动的一个可能原因,虽然几乎不会被注意到。
2. F#是否有效地复制记录并更新所有字段?如果没有,我该如何提高效率?