Haskell的GC性能如何用于游戏等软实时应用程序?

时间:2010-12-19 12:45:05

标签: performance haskell garbage-collection real-time soft-real-time

因为我意识到游戏规则逻辑应该处理巨大的复杂性,所以我正在考虑在游戏领域中使用非典型语言作为游戏中的逻辑脚本语言。游戏中脚本的原因是用较少的代码表示复杂的逻辑。因此需要非常好的抽象语言。

但大多数提取良好的语言都使用GC。通常,GC会产生CPU突发负载。基本上它推迟了清除内存操作,并立即执行。对包括游戏和GUI在内的实时图形至关重要。

AFAIK,Haskell的GC与其他基于GC的语言略有不同,因为它是不可变的属性。很难想象。我没有详细找到任何文件。

有什么不同?对于长时间运行的程序,CPU是否可以免费使用? (随着时间的推移分布均匀,可以为每个滴答调用手动完成GC命令)

3 个答案:

答案 0 :(得分:6)

你可能想看看Luke Palmer在这里发起的主题:http://www.haskell.org/pipermail/haskell-cafe/2010-February/thread.html#73881

答案 1 :(得分:4)

您可能会对this blog post by Simon Marlow感兴趣将GHC从世界各地的收集转移到更适合虚拟实时应用(如游戏)的暂停时间。

我自己没有对GHC延迟配置文件进行基准测试,但据我所知,那些0.0007ms的暂停时间可能看起来很小但是它们与堆大小成正比,这对于玩具井字游戏程序来说很小,所以真正的堆积和暂停时间会大一些数量级。

答案 2 :(得分:4)

你可能对商业Haskell游戏感兴趣,Nikki and the Robots,发布于 2011年由Joyride Labs。

enter image description here

他们似乎没有使用垃圾收集器的任何麻烦。