[英]OptaPlanner: Difference between filtering during or after join
在语义或性能方面,两者之间有什么区别吗?
cf.forEach(Entity.class)
.join(cf.forEach(Entity.class),
Joiners.filtering(myBiPredicate)))
...
对比
cf.forEach(Entity.class)
.join(cf.forEach(Entity.class))
.filter(myBiPredicate)))
...
另外, Joiners
是否按照给定的顺序执行? (例如,是否建议将修剪大量对的过滤器放在参数列表的早期?)
回答你的第一个问题 - 不,这两个约束之间没有实际区别。 Joiners.filtering(...)
存在,因此您可以在ifExists(...)
调用中应用过滤器; 在进行普通连接时,您不妨在连接后进行过滤。
为了回答你的第二个问题,我写了整篇博文。 是的,最好早点修剪。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.