我正在为我的项目评估一个规则引擎。该项目将基于hadoop。我已经使用DROOLS做了一些POC。基本上,我在Mapper端使用DROOL。基于此,以下是我的观察和质疑。
1) a)我使用drools在300万个对象上触发了规则(大约花了17秒) b)我使用if/else循环对300万个没有drools的对象应用了相同的逻辑,使用简单的Java对象(大约用了.17秒)。B大约是。比a快100倍。这是正常行为吗?有没有办法将规则编译成java字节码/类。
2)除了DROOLS之外,最快的基于Java的规则引擎框架是什么?是否有人使用普通的GROOVY开发了规则引擎。有没有其他框架建议可以将业务规则编译成java字节码,从而使规则评估速度更快?
3)有人对什么是最适合hadoop的DSL/Rule框架有一些经验。
发布于 2014-05-05 18:39:30
关于Drools/Java (Q1):
你可能没有建立一个公平的比较。有几种方法可以“在300万个对象上触发一个规则”,而你可能没有选择最快的。
众所周知,当您在正向链接引擎中运行多模式/多对象匹配算法时,会产生相当大的开销。您可能根本不需要规则,或者使用更简单(更有效)的规则评估技术就足够了。
至于比较规则引擎:这是一个非常可疑的主题。每个基准测试都有其特殊的使用场景,一些供应商已经通过一些著名的(学术)测试或其他测试优化了他们的引擎以获得更好的性能。
至于Q2,我不知道。考虑到开发一个好的规则引擎需要大量的智慧、时间和精力,我非常怀疑这一点。
我不认为你能得到Q3的答案。“最佳”永远不会与某个应用程序框架相关--衡量标准是规则的数量和复杂性与数据的数量和复杂性相结合。
https://stackoverflow.com/questions/23468910
复制相似问题