为什么Scalacheck的Gen.pick添加了条件后检查?

时间:2015-10-14 07:56:21

标签: scala scalacheck

我正在使用自定义Gen序列,因为我的要求是“在集合C中选择一堆元素(命名为A),然后选择A的一个子集(名为B),然后随机生成一堆东西B'。

当我使用大尺寸的集合C(例如10000)时,我最终会得到永远的测试。火焰图表示在Scalacheck实现中花费在lambda中的时间。看一下代码,我有一种直觉,pick中的代码会增加很多延迟:.suchThat(_.forall(x => l.exists(x == _)))

这是一个线性操作,如果输入集合没有像HashSet这样的快速查找,则可以变为二次方。

我的问题是:为什么首先添加suchThat条件?我们可以没有那些“不安全”的API吗?

0 个答案:

没有答案