我正在使用自定义Gen
序列,因为我的要求是“在集合C中选择一堆元素(命名为A),然后选择A的一个子集(名为B),然后随机生成一堆东西B'。
当我使用大尺寸的集合C(例如10000)时,我最终会得到永远的测试。火焰图表示在Scalacheck实现中花费在lambda中的时间。看一下代码,我有一种直觉,pick
中的代码会增加很多延迟:.suchThat(_.forall(x => l.exists(x == _)))
这是一个线性操作,如果输入集合没有像HashSet
这样的快速查找,则可以变为二次方。
我的问题是:为什么首先添加suchThat
条件?我们可以没有那些“不安全”的API吗?