问题
这类代码可能导致 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}} 熵的单独数字)。