5

我一直在阅读一篇关于 Drools 性能的文章(JBoss Drools – Performance and Memory Internals),它解释了如何创建 Rete 树和节点,Drools 如何对它们进行索引,以及为什么 Drools 中对象数量的增加几乎不会影响执行的总时间它。以智能方式编写的规则可以大大减少 Rete Tree 中的节点数量,从而进一步提高性能。

我想知道是否有 Drools 规则编写最佳实践,所以我可以以一种可以尽可能快地执行它们的方式编写它们。

谢谢。

4

2 回答 2

4

我可以列举几个...

  • 把最严格的条件放在最上面
  • 在您的规则中使用相同的条件顺序
  • 除非必须,否则不要使用 eval。
  • 将评估放在条件的底部
  • 不要在后果内使用 if 语句
  • 在 Drools 5.4 上使用布尔值的快捷方式会导致 JIT 错误,所以不要使用House ( windowOpen == true )它们House ( windowOpen )
  • 不要使用salience,在大多数情况下会导致维护地狱。

它当然不完整,只是我的 2 美分......

于 2012-11-08T20:49:55.270 回答
3

我最近才开始研究同样的问题,所以我可能不是回答这个问题的完美人选,但是,

  • 您认为应该优先考虑的条件将它们放在首位
  • 您使用的 then 条件应该非常努力地准备。
  • 计划使用 Eclipse-Drool UI 创建好的规则
  • 切勿尝试if-statements在 then 部分内使用
  • 为布尔值使用快捷方式,因为它们经常会导致错误
  • 始终遵循 RWTE 的模式,即 1. RULE 2. WHEN 3. THEN 4. END
  • 避免使用显着性,它在大多数情况下会引起麻烦
  • 尝试将规则与自定义类而不是预定义集集成以用于您的操作
  • 您使用的条件何时部分应该是相互关联的而不是空的(即,条件应该链接到一些存在的值)。
  • 正确使用 Import 语句...
  • 绝对这个列表是永无止境的,所以不断更新自己.... :)
于 2014-02-13T08:26:56.037 回答