2024 年 Clojure 调查问卷! 中分享您的想法。

欢迎!请参阅 关于 页面以获取更多关于这是如何工作的信息。

0
test.check

问题

这类代码可能导致 OOM

`
(-> gen/boolean

gen/vector
gen/vector
gen/vector
gen/vector
gen/vector
gen/vector
gen/generate)

`

建议的解决方案

在生成集合元素时,减少 {{size}}。

  • 这个是否应该适用于 {{gen/tuple}}?固定大小的 {{gen/vector}} 呢?
    -- 我目前认为不适用和分别适用
  • 我们应该无脑减少大小,还是基于预期的元素数量(例如,除以预期的元素数量)?对于 {{distinct}} 集合生成器,预测元素计数非常困难。

另一种方法

假设跟踪了随着集合生成消耗的随机量,并在达到限制后强制使事物保持小型化。

对于 test.check,这种方法可能会有难点,但也并非不可能。

一个想法是让生成器返回,除了玫瑰树外,还应返回一个表示它们使用了多少位的熵的数字(也许还有一个表示它们可能消费的 {{minimum}} 熵的单独数字)。

1 答案

0
参考:https://clojure.atlassian.net/browse/TCHECK-106(由 gfredericks 报告)
...