gpt4 book ai didi

optimization - 在 GHC 中减少 GC 时间的一般建议

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

当 GHC 编译的程序花费大量时间进行垃圾收集时,是否有任何通用规则可遵循以发现原因?什么通常会被认为太多?例如,一般来说,60% 的生产力是可以接受的,还是表明代码可能有问题?

最佳答案

这是一个快速且非常不完整的列表:

  • 测试和基准测试。 haskell 的少数弱点之一是难以预测时间和空间成本。如果您没有测试数据,您将一无所有。
  • 使用更好的算法。这听起来太简单了,但优化低效的算法就像敲打金子一样。
  • 战略性地使一些数据更加严格。 测试和基准测试! 目标是存储物理上较小的 WHNF 值,而不是产生它的 thunk,从而在最有效的第一遍中清理更多垃圾。寻找产生简单数据的复杂函数。
  • 战略性地使一些数据不那么严格。 测试和基准测试! 目标是延迟大量数据的产生,直到它被使用和丢弃之前,从而在最有效的第一遍中清理更多的垃圾。寻找产生大量复杂数据的简单函数。另请参阅comonads。
  • 战略性地利用数组和未装箱的类型,特别是参见#2。关于 ST monad。 测试和基准测试! 所有这些都将更多的原始数据放入更小更紧凑的内存中。可以收集的垃圾更少。
  • 摆弄 RTS 设置(特定于 ghc)。 测试和基准测试! 目标是使 GC 与程序的内存需求“匹配”。与 1-5 相比,我在这里迷失了更多,所以请咨询专家。

  • 更好的垃​​圾收集有一个相当简单的前提:创建更少的垃圾,更快地收集它,产生更少的内存分配/释放。您可以做的任何可能导致这三种效果之一的事情都值得一试。 测试和基准测试!

    关于optimization - 在 GHC 中减少 GC 时间的一般建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9532737/

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