gpt4 book ai didi

performance - Haskell 是否适合长时间运行的应用程序?

转载 作者:行者123 更新时间:2023-12-03 10:40:23 27 4
gpt4 key购买 nike

我认为 Haskell 是一门漂亮的语言,从基准测试来看,它的实现可以生成快速的代码。

但是,我想知道它是否适用于长时间运行的应用程序,或者是否会追逐所有潜在的懒惰引起的泄漏,人们可能会在短期应用程序中忽略这些泄漏,证明令人沮丧?

This Reddit comment呼应我的担忧:

As soon as you have more than one function calling itself recursively, the heap profile ceases to give you any help pinpointing where the leak is occurring.



(整个讨论似乎富有洞察力和坦率)

我个人对高性能计算很感兴趣,但我猜服务器和 HPC 有这个共同点。

如果 Haskell 适用于此类应用程序,是否有任何示例可以证明这一点,即应用程序
  • 需要运行数天或数周,因此需要消除所有相关泄漏(程序花费在 sleep 或等待某些底层 C 库返回的时间显然不计算在内)
  • 是不平凡的(如果应用程序很简单,开发人员可以猜测泄漏的来源并尝试各种修复。但是,我不相信这种方法可以很好地扩展。堆配置文件在识别泄漏源方面的帮助根据上面的 Reddit 讨论,具有多个 [相互] 递归函数的泄漏似乎特别值得关注)

  • 如果 Haskell 不适合此类应用程序,那为什么呢?

    更新: Haskell 的 Yesod Web 服务器框架,作为示例提出, may have issues with memory .我想知道是否有人在连续几天服务请求后测试了它的内存使用情况。

    最佳答案

    “空间泄漏”在语义上与任何语言中的任何其他类型的资源使用问题相同。在严格的语言中,GC 倾向于分配和保留太多的数据(因为结构是严格的)。

    无论是哪种语言,您都应该做一些“烧录”来随着时间的推移寻找资源使用情况,Haskell 也不异常(exception)。

    参见例如xmonad ,一次运行数月或数年。这是一个 Haskell 应用程序,堆使用量很小,我通过运行数周或数月来测试它,并进行分析以分析堆模式。这让我相信资源使用是稳定的。

    最终,懒惰在这里是一条红鲱鱼。使用资源监控工具和测试来衡量和验证您的资源预期。

    关于performance - Haskell 是否适合长时间运行的应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30470013/

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