gpt4 book ai didi

node.js - Nools 和流口水

转载 作者:行者123 更新时间:2023-12-03 12:13:28 24 4
gpt4 key购买 nike

我真的很高兴在 Node 中看到一个规则引擎,也在 Java 世界中查看 Drools 并阅读文档(特别是:http://docs.jboss.org/drools/release/6.1.0.Final/drools-docs/html_single/index.html#PHREAK)found,Drools 6.0 已经发展,现在使用 PHREAK 方法进行规则匹配。具体段落感兴趣的是:

Each successful join attempt in RETE produces a tuple (or token, or partial match) that will be propagated to the child nodes. For this reason it is characterised as a tuple oriented algorithm. For each child node that it reaches it will attempt to join with the other side of the node, again each successful join attempt will be propagated straight away. This creates a descent recursion effect. Thrashing the network of nodes as it ripples up and down, left and right from the point of entry into the beta network to all the reachable leaf nodes.



对于复杂的规则和超过一定限度的规则,上面引用说基于RETE的方法非常浪费内存,因此它演变为PHREAK。

既然nools是基于Rete算法的,那么以上有效吗?是否有任何类似于 PHREAK 的优化?与 Drools 进行过任何比较吗?

最佳答案

只有当您想尝试应用并发性和并行性时,网络抖动才会成为问题,这需要锁定区域。由于 NodeJS 是单线程的,这不会成为问题。我们也还没有尝试在 Drools 中解决这个领域——但 Phreak 的工作是考虑到这一点,从我们在 Rete 实现中发现的问题中学习。另请注意,Rete 过去曾使用分区算法进行并行处理,这项工作与它试图解决的问题处于同一领域。

对于单线程机器,惰性规则评估更有趣。然而,正如文档所指出的,单个连接规则在 Phreak 和 Rete 之间的性能上不会有所不同。当您添加大量规则时,惰性自然避免了潜在的工作,从而节省了所有 cpu 周期。该算法对于大量写得不好的规则也更加宽容,并且性能下降的幅度应该较小。例如,它不需要用于驱动规则选择和短路浪费匹配的传统 Rete 根“上下文”对象 - 这将被视为 Phreak 中的反模式,并且实际上可能会减慢它的速度,因为你吹走了匹配它可能在 future 再次使用。
http://www.dzone.com/links/rip_rete_time_to_get_phreaky.html

当规则中使用多个子网时,面向集合的传播也是相关的,例如多个累加。
http://blog.athico.com/2014/02/drools-6-performance-with-phreak.html

我还对反向链接和堆栈评估基础结构进行了跟进:
http://blog.athico.com/2014/01/drools-phreak-stack-based-evaluations.html

马克(Phreak的创造者)

关于node.js - Nools 和流口水,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26051726/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com