gpt4 book ai didi

haskell - Haskell 中的 GC 在软实时应用程序中暂停

转载 作者:行者123 更新时间:2023-12-02 10:09:11 25 4
gpt4 key购买 nike

我目前学习 Haskell 是为了好玩,因为我一直想看看你如何以非面向对象的方式设计程序。

但我也在研究使用 Haskell 作为游戏引擎是否有用。我主要关心的是 GC。

我知道GHC是并发的、线程本地的。

我读到 GC 通常会在 1ms-5ms 之间暂停。我知道每个程序都不同,但我仍然需要一些数字来进行一些计算。

假设我的游戏以 60fps 运行,这意味着每一帧都需要 0.016666667s 的计算,对吧? gc 暂停会将其增加到 ~0.017666667,从而导致 56fps。因此,性能损失为 ~4fps7%。对我来说这是一个很大的打击。

现在我依靠线程本地GC,因为我希望我的游戏引擎具有高度并发性。

我想在游戏代码中使用 Actor 模型,以便每个实体都有自己的内存。如果我是对的,这意味着每个实体都有自己的本地垃圾收集。

但主要问题仍然是游戏引擎及其主循环。 7% 的随机 fps 下降相当大。

我的计算正确吗?您可以给我什么建议吗?

最佳答案

你的计算有偏差。

你是对的:60 fps = 每 0.0166667 秒 1 帧。

假设(最坏的情况)GC 将程序暂停 5 毫秒。每次 GC 运行,您都会损失 0.005。这意味着每次调用 GC 时,都会损失 0.333 fps。

为了获得正确的计算,我们需要能够知道 GC 被调用的频率,我不知道,但这肯定与程序生成的数据量有关。

关于haskell - Haskell 中的 GC 在软实时应用程序中暂停,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18234181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com