2024年Clojure状态调查!中分享您的想法。

欢迎!请查看关于页面以获取更多关于如何工作的信息。

0
test.check

问题

这类代码可能会导致内存溢出

`
(-> gen/boolean

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

`

建议的解决方案

减少生成集合元素时的大小。

  • 这应该适用于{{gen/tuple}}吗?对于具有固定大小的{{gen/vector}}又如何?
    -- 我目前认为不应该对{{gen/tuple}}这样做,但应该对{{gen/vector}}这样做
  • 我们应该盲目地减少大小,还是它基于预期元素的个数(例如,除以预期元素的个数)?对于{{distinct}}集合生成器,预测元素数量是困难的。

另一种方法

假设在生成集合时会跟踪消耗了多少随机性,并在达到限制后强制其变得小。

对于test.check,这种方法可能很困难,但也许并非不可能。

一个想法是让生成器返回除玫瑰树之外,指示使用了多少比特熵的数字(以及可能另一个指示它们可能消耗的{{最小}}量熵的数字)。

1 个答案

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