6个版本
0.1.5 | 2020年5月11日 |
---|---|
0.1.4 | 2020年4月21日 |
0.1.2 | 2020年2月23日 |
1668 在 算法 中
350KB
7K SLoC
phreak_engine
Phreak_engine包包含一个规则引擎,一个使用phreak算法优化的事实匹配程序。
事实匹配算法被用作许多厂商产品底层实现,例如复杂事件处理(CEP)、决策引擎、规划器和BPM工具。
正在进行中
这是一个概念的起点,绝对不稳固。它是对phreak算法的研究,可能在某一天有用。
lib.rs
:
Phreak算法是一种基于Rete算法的规则匹配算法,如Robert B. Doorenbos在1995年1月31日发表的论文《大型学习系统的生产匹配》中所述。
该算法用于将事实与一系列规则进行匹配,以查看是否任何组合会触发规则。规则被称为生产,当一组事实与规则匹配时,它被称为激活。
Phreak算法由Drools项目实现。我们不是试图创建一个从Java到Rust的移植,而是根据Drools文档中的思想从头开始构建算法。
我们旨在仅使用安全的Rust代码。
我们试图通过以下概念来实现良好的性能
-
惰性评估
最快的代码是你没有执行的代码。
-
缓存友好评估
通过分组数据评估,我们试图优化CPU的缓存使用。
-
最小化数据分配
分配是缓慢的,因此应避免。我们使用Rust的所有权模型来安全地传递数据,而不是传递副本。
依赖关系
~2.6–3.5MB
~71K SLoC