【问题标题】:Test that a Haskell function has a space leak测试 Haskell 函数是否存在空间泄漏
【发布时间】:2017-08-14 00:30:04
【问题描述】:

我正在用 Haskell 编写一个示例空间泄漏的集合,并想编写一个测试套件以防万一我插入任何实际上没有泄漏空间的示例。

有没有办法测试示例而不为每个示例创建单独的可执行文件?

【问题讨论】:

  • Neil Mitchell 在他的博客中描述了一种非常有效且技术含量非常低的技术:[检测空间泄漏](neilmitchell.blogspot.com/2015/09/detecting-space-leaks.html)。
  • 将来可以使用静态分析器进行检查:) 如果可以将其形式化,那么检测空间泄漏只是实现算法的问题。
  • @Cactus:那是一篇很棒的文章。不幸的是,我不知道是否有可能捕获内存不足时生成的异常(这是有道理的)。我尝试在另一个进程中使用System.Posix.process.forkProcess 生成异常并使用ClassyPrelude.catchAny 捕获它,但它仍然通过并导致测试套件崩溃。

标签: haskell


【解决方案1】:

您可以通过测试检测空间泄漏,但不能证明不存在空间泄漏。即使内存配置文件相对较低,它也可能只是指出空间泄漏非常小并且您没有进行足够的迭代。

要检测空间泄漏,您可以使用此处所述的分配限制和计数器May I limit memory usage per function/monad/thread in Haskell?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-16
    • 2013-03-10
    • 1970-01-01
    • 1970-01-01
    • 2011-02-28
    相关资源
    最近更新 更多