我目前学习 Haskell 是为了好玩,因为我一直想看看你如何在非面向对象的意义上设计程序。
但我也在研究将 Haskell 用于游戏引擎是否有用。我主要关心的是GC。
我知道 GHC 是并发的和线程本地的。
我读到 GC 通常会在 1ms-5ms 之间暂停。我知道每个程序都不同,但我仍然需要一些数字来进行一些计算。
假设我的游戏运行在60fps
这意味着每一帧都需要0.016666667s
计算,对吗?一个 gc 暂停会增加这~0.017666667
导致56fps
. 所以它是~4fps
or的性能损失7%
。对我来说,这是一个相当大的打击。
现在我指望线程本地 GC,因为我希望我的游戏引擎是高度并发的。
我想将 Actor 模型用于游戏代码,以便每个实体都有自己的内存。如果我是对的,这意味着每个实体都有自己的本地垃圾收集。
但主要问题仍然是主循环的游戏引擎。7% 的随机 fps 下降是相当大的。
我的计算正确吗?有什么建议可以给我吗?