gpt4 book ai didi

haskell - Haskell 软实时的当前状态

转载 作者:行者123 更新时间:2023-12-03 08:56:48 24 4
gpt4 key购买 nike

我正在考虑将 Haskell 用于软实时应用程序。我可能会使用 Actor ,因为它的值(value)。我想知道是否有人对 Haskell 的当前实时状态有所了解。具体来说,GC 暂停应用程序的问题。我在 Google 上进行了广泛的搜索,发现了 2 年前的大量讨论,但没有最新的。以下是我找到的一些引用资料:

Using Haskell for sizable real-time systems: how (if?)?

How about Haskell's GC performance for soft realtime application like games?

我读过的许多旧资料表明情况(当时)被认为正在改善。有吗?

即使在 2 年多以前,也有一些评论表明 Haskell 应用程序可以进行调整,以可靠地将 GC 暂停时间缩短到一两毫秒。这看起来很现实吗?

最佳答案

所以对“实时”的关注是 GC 集合引入的延迟。

GHC 使用多核垃圾收集器(有 a branchper-thread local heaps )。最初开发是为了通过降低频繁停止世界同步的成本来提高多核性能(每个核心 can collect independently),出于同样的原因,这恰好也有利于软实时。然而,截至 2013 年,per-thread local heap 尚未合并到 main GHC 中,尽管并行 GC 已经合并。

对于游戏,您应该能够通过使用线程来利用这一点,从而减少对 stop-the-world 本地集合的需求。

对于长期存在的对象,在全局堆中,您仍然冒着一些(毫秒)GC 的风险。但是,仔分割析例如ThreadScope将消除这里的障碍。我已经看到通过 GHC 管理的网络堆栈流式传输实时 1080p 视频,而没有明显的 GC 暂停。

即使没有这些调整,事情“可能会奏效”。 Frag 几乎不需要优化,并且在将近 10 年前的现在是软实时的。

最后,还有许多工具和 GHC 标志可以提高性能:

  • ghc-gc-tune - 获得最佳 GC 标志的图形分解
  • Advice on throughput
  • garbage collection 的选项- (-Iseconds 可能有用)

  • 然后是编码:使用未装箱的类型(无 GC),最小化惰性结构分配。以打包形式保存长期存在的数据。测试和基准测试。

    我想你会没事的。

    关于haskell - Haskell 软实时的当前状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15236238/

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